Packages
First we load all the necessary packages for the analysis.
library(psych)
library(corrplot)
library(ggplot2)
library(car)
library(naniar)
library(REdaS)
library(zoo)
library(foreign)
library(lavaan)
library(lavaanPlot)
library(ggcorrplot)
library(lares)
library(MVN)
library(dplyr)
library(knitr)
library(dplyr)
library(kableExtra)
library(semPlot)
Data
Here we load the data and select only the necessary value for the analysis.
df <- read.csv2('Case Study III_Structural Equation Modeling.csv', na.strings = '999', sep = ',')
df <- df[, c(1:23, 25:36)]
DT::datatable(df)
Dimensions
To see how much data we have we look at the dimensions of the data.
dim_before_na <- dim(df)
dim_before_na
## [1] 553 35
We see that we have 553 rows and 35 columns.
Summary Statistics
Here we use summary statistics on the data.
DT::datatable(describe(df))
Missing Analysis
As not all further analysis do work with missing values we need to check the existence of them.
gg_miss_var(df, show_pct = TRUE)
We see that there are a lot of columns which have some percentage of values missing. To see if the missing values are in some observations only or if they are spread out between a lot of the observations we use a plot which highlights the missing values in every observation.
naniar::vis_miss(df)
If we look at this plot though we see that the missing values are in a lot of the observations. Most EFA methods do not work well with missing values. For the Confirmatory Analysis we will need to choose a method which can handle missing values.
Dimensions after list wise deletion
Based on the input of the assistant we will use list wise deletion for EFA.
dim_after_na <- dim(na.omit(df))
dim_after_na
## [1] 309 35
na_remove_count <- dim_after_na - dim_before_na
na_remove_count[1] <- abs(na_remove_count[1])
Thus, we remove 244 with list wise deletion which is a lot of observations compared to the size of the whole dataset.
# We do list-wise deletion as asked by the TA
df_listwise <- na.omit(df)
Assumptions for EFA
From Assistant Please only consider variables image1 to image22, and use list wise deletion to handle missing data before starting exploratory factor analysis.
Basic Assumptions
Here we select the images which whe need for the EFA.
df_1 <- df_listwise[,1:22]
Normality - Shapiro Wilk’s test
In this part we check if the data is normally distributed.
apply(df_1, 2, shapiro.test)
## $Im1
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92373, p-value = 1.851e-11
##
##
## $Im2
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92499, p-value = 2.411e-11
##
##
## $Im3
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92371, p-value = 1.844e-11
##
##
## $Im4
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92014, p-value = 8.873e-12
##
##
## $Im5
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.91233, p-value = 1.921e-12
##
##
## $Im6
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.82674, p-value < 2.2e-16
##
##
## $Im7
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.84612, p-value < 2.2e-16
##
##
## $Im8
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.80379, p-value < 2.2e-16
##
##
## $Im9
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92158, p-value = 1.187e-11
##
##
## $Im10
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.7981, p-value < 2.2e-16
##
##
## $Im11
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.85448, p-value < 2.2e-16
##
##
## $Im12
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.86819, p-value = 1.38e-15
##
##
## $Im13
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.89122, p-value = 4.669e-14
##
##
## $Im14
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.79446, p-value < 2.2e-16
##
##
## $Im15
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.91767, p-value = 5.414e-12
##
##
## $Im16
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.90488, p-value = 4.853e-13
##
##
## $Im17
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.90676, p-value = 6.818e-13
##
##
## $Im18
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.93189, p-value = 1.081e-10
##
##
## $Im19
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.90393, p-value = 4.097e-13
##
##
## $Im20
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92824, p-value = 4.834e-11
##
##
## $Im21
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.89126, p-value = 4.7e-14
##
##
## $Im22
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.94596, p-value = 3.211e-09
We reject the null-hypothesis for all variables and thus don’t accept normality of the data.
Multivariate normality - Mardia’s Multivariate Normality Test
To say the data are multivariate normal:
• z-kurtosis < 5 (Bentler, 2006) and the P-value should be ≥ 0.05. • The plot should also form a straight line (Arifin, 2015).
MVN::mvn(df_1, mvnTest = "mardia", multivariatePlot = "qq", desc = FALSE)
## $multivariateNormality
## Test Statistic p value Result
## 1 Mardia Skewness 5693.58260956909 0 NO
## 2 Mardia Kurtosis 48.5688465675536 0 NO
## 3 MVN <NA> <NA> NO
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Anderson-Darling Im1 9.2497 <0.001 NO
## 2 Anderson-Darling Im2 9.0183 <0.001 NO
## 3 Anderson-Darling Im3 9.0339 <0.001 NO
## 4 Anderson-Darling Im4 9.6661 <0.001 NO
## 5 Anderson-Darling Im5 10.8951 <0.001 NO
## 6 Anderson-Darling Im6 18.6917 <0.001 NO
## 7 Anderson-Darling Im7 17.3319 <0.001 NO
## 8 Anderson-Darling Im8 21.2033 <0.001 NO
## 9 Anderson-Darling Im9 9.2733 <0.001 NO
## 10 Anderson-Darling Im10 22.1406 <0.001 NO
## 11 Anderson-Darling Im11 16.4825 <0.001 NO
## 12 Anderson-Darling Im12 14.7775 <0.001 NO
## 13 Anderson-Darling Im13 12.4484 <0.001 NO
## 14 Anderson-Darling Im14 21.7494 <0.001 NO
## 15 Anderson-Darling Im15 10.1132 <0.001 NO
## 16 Anderson-Darling Im16 11.4400 <0.001 NO
## 17 Anderson-Darling Im17 10.7737 <0.001 NO
## 18 Anderson-Darling Im18 8.0021 <0.001 NO
## 19 Anderson-Darling Im19 12.4287 <0.001 NO
## 20 Anderson-Darling Im20 7.9905 <0.001 NO
## 21 Anderson-Darling Im21 13.1862 <0.001 NO
## 22 Anderson-Darling Im22 6.1723 <0.001 NO
The data are not normally distributed at multivariate level. Our extraction method PAF can deal with this non-normality.
Multicolinearity
Here we check for multicolinearity in the data. First of all we will do a correlation plot and then a correlation ranking plot.
# Correlation Values Matrix
M <- cor(df_1)
# P-Value
p.mat <- cor_pmat(df_1)
Here we see the correlation plot of the images.
# Correlation Plot
ggcorrplot(M, hc.order = TRUE, type = "lower", lab = TRUE, p.mat = p.mat, sig.level=0.05, lab_size = 2, tl.cex = 10,outline.col = "white", ggtheme = ggplot2::theme_minimal(), colors = c("#823038", "white", "#2596be"))
We see that there are some correlations between the images.
Here we show the highest correlation from the plot before.
# Ranked Cross-Correlations
corr_cross(df_1, # name of dataset
max_pvalue = 0.05, # display only significant correlations (at 5% level)
top = 9 # display top 10 couples of variables (by correlation coefficient)
)
As we can see, We have some multicolinearity amongst the variables, at least 6 variables can be considered with high-colinearity. Im3+Im4, Im1+Im2, Im6+Im7, Im4+Im5, Im8+Im10 and Im8+Im14.
A guide to appropriate use of Correlation coefficient in medical research
Factors Analysis Assumptions
Here we check the assumptions needed for factor analysis.
Kaiser-Meyer-Olkin test (KMO)
First of all we look at the kaiser-meyer-olkin test which checks the sampling adequacy of all of our images. Thereby a score classifies the adequacy as it can be seen in the picture below.
KMO: Find the Kaiser, Meyer, Olkin Measure of Sampling Adequacy
KMO Index
Now we show the KMO value for all of our images.
KMOTEST <- KMO(M)
sort(KMOTEST$MSAi)
## Im6 Im10 Im14 Im2 Im1 Im7 Im20 Im17
## 0.7791619 0.8192843 0.8206186 0.8275596 0.8316756 0.8342908 0.8369658 0.8459668
## Im18 Im4 Im3 Im13 Im12 Im22 Im21 Im11
## 0.8479170 0.8623498 0.8647696 0.8749019 0.8763560 0.8850423 0.8930068 0.9101259
## Im16 Im8 Im9 Im19 Im15 Im5
## 0.9168866 0.9231784 0.9240378 0.9432565 0.9558911 0.9616355
As one can see most KMO Index are either Meritorious or Marvelous. Im6 is the lowest KMO index being Middling.
KMO Overall Measure of sampling adequacy
From all of these scores a general sampling adequacy can be computed.
KMOTEST$MSA
## [1] 0.8739058
With 0.87 the overall sampling adequacy is very high.
Bartlett’s Test of Sphericity
This test checks if there are correlations between the variables as EFA can not be done if there wouldn’t be.
cortest.bartlett(df_1)
## $chisq
## [1] 5268.134
##
## $p.value
## [1] 0
##
## $df
## [1] 231
The test says that EFA can be done as the test indicates a p-value of 0 (P-value = 0) and thus we can reject the null hypothesis that the correlation matrix look like the identity matrix.
Exploratory Factor analysis
Now we do an exploratory factor analysis of our images.
Determine the number of factors
To determine the number of factors there are five different criterions one can use which are listed below.
- Kaiser’s eigenvalue > 1 rule.
- Cattell’s scree test.
- Parallel analysis.
- Very simple structure (VSS).
- Velicer’s minimum average partial (MAP).
Kaiser’s eigevalue > 1 rule
Factors with eigenvalues > 1 are retained. Eigenvalue can be interpreted as the proportion of the information in a factor. The cut-off of 1 means the factor contains information = 1 item. Thus it is not worthwhile keeping factor with information < 1 item.
fa_result <- fa(df_1, rotate = "varimax", fm = "pa")
factors_kaiser <- sum(fa_result$e.values>1)
According to the Kaiser-Criterion, we would use 6 factors.
Catell’s scree test
For the scree test criterion one needs to look at the plot of the initial eigenvalues against the used factors and choose the value where there is a dent in the curve. Here we did a factor analysis using rotation varimax and plotted the initial eigenvalues
fa_result <- fa(df_1, rotate = "varimax", fm = "pa")
n_factors <- length(fa_result$e.values)
scree <- data.frame(Factor_n = as.factor(1:n_factors), Eigenvalue = fa_result$e.values)
ggplot(scree, aes(x = Factor_n, y = Eigenvalue, group = 1)) +
geom_point() + geom_line() +
xlab("Number of factors") +
ylab("Initial eigenvalue") +
labs( title = "Scree Plot",
subtitle = "(Based on the unreduced correlation matrix)") +
geom_hline(yintercept = 1, color="#2596be") + theme_minimal()
As one can see from the plot the number of factors to choose would either be 7 or 8. Additionally in the scree plot one can see the kaiser criterion which selects all the factors above the blue line of eigenvalue > 1.
Parallel analysis
Here we do a parallel factor analyis.
parallel <- fa.parallel(df_1, fm = "pa", fa = "fa")
## Parallel analysis suggests that the number of factors = 6 and the number of components = NA
print(parallel)
## Call: fa.parallel(x = df_1, fm = "pa", fa = "fa")
## Parallel analysis suggests that the number of factors = 6 and the number of components = NA
##
## Eigen Values of
##
## eigen values of factors
## [1] 8.52 1.78 0.92 0.76 0.65 0.58 0.20 0.13 -0.09 -0.12 -0.21 -0.25
## [13] -0.29 -0.34 -0.37 -0.40 -0.42 -0.42 -0.47 -0.51 -0.54 -0.60
##
## eigen values of simulated factors
## [1] 0.60 0.46 0.38 0.32 0.26 0.22 0.18 0.13 0.10 0.06 0.02 -0.01
## [13] -0.05 -0.08 -0.12 -0.16 -0.20 -0.22 -0.26 -0.30 -0.34 -0.39
##
## eigen values of components
## [1] 9.11 2.46 1.58 1.36 1.26 1.14 0.79 0.73 0.56 0.46 0.36 0.33 0.30 0.28 0.25
## [16] 0.22 0.19 0.18 0.14 0.11 0.10 0.08
##
## eigen values of simulated components
## [1] NA
As we can see in parallel analysis, it also suggest 6 factors, nevertheless, factors up to 7 or 8 can also be considered.
Very simple structure (VSS) criterion and Velicer’s minimum average partial (MAP) criterion
Here we do the VSS and MAP criterion.
vss(df_1, rotate = "varimax", fm = "pa")
##
## Very Simple Structure
## Call: vss(x = df_1, rotate = "varimax", fm = "pa")
## VSS complexity 1 achieves a maximimum of 0.84 with 1 factors
## VSS complexity 2 achieves a maximimum of 0.9 with 2 factors
##
## The Velicer MAP achieves a minimum of 0.04 with 8 factors
## BIC achieves a minimum of -334.88 with 8 factors
## Sample Size adjusted BIC achieves a minimum of -71.64 with 8 factors
##
## Statistics by number of factors
## vss1 vss2 map dof chisq prob sqresid fit RMSEA BIC SABIC complex
## 1 0.84 0.00 0.047 209 2756 0.0e+00 16.0 0.84 0.199 1558 2221 1.0
## 2 0.71 0.90 0.044 188 2143 0.0e+00 10.1 0.90 0.183 1065 1661 1.3
## 3 0.62 0.89 0.045 168 1773 1.0e-265 7.6 0.92 0.176 810 1343 1.4
## 4 0.52 0.84 0.047 149 1455 8.0e-213 5.9 0.94 0.168 600 1073 1.7
## 5 0.44 0.76 0.044 131 1139 3.0e-160 4.3 0.96 0.158 388 803 1.9
## 6 0.39 0.63 0.042 114 636 1.9e-73 3.0 0.97 0.122 -18 344 2.1
## 7 0.39 0.60 0.045 98 296 1.1e-21 2.3 0.98 0.081 -266 45 1.9
## 8 0.37 0.54 0.036 83 141 7.5e-05 1.7 0.98 0.047 -335 -72 2.0
## eChisq SRMR eCRMS eBIC
## 1 2321 0.127 0.134 1122
## 2 1213 0.092 0.102 135
## 3 837 0.077 0.090 -126
## 4 588 0.064 0.080 -266
## 5 364 0.051 0.067 -387
## 6 157 0.033 0.047 -497
## 7 74 0.023 0.035 -488
## 8 19 0.012 0.019 -456
VSS indicates 1 or 2 factors (vss1 largest at 1 and 2 factors), while MAP indicates 8 factors (map smallest at 8 factors).
VSS criterion for the number of factors (in R’s psych package)
Extraction Method
Our data are not normally distributed, hence the extraction method of choice is principal axis factoring (PAF), because it does not assume normality of data (Brown, 2015). The rotation method is varimax.
We run EFA by
- fixing the number of factors as decided from previous step. 6 or 8 factors are reasonable.
- choosing an appropriate extraction method. We use PAF, fm = “pa” (Principal Axis Factoring).
- choosing an appropriate rotation method. We use varimax, rotate = “varimax”.
6 Factors
We will compute the loadings with 6 factors and varimax rotation
What we need to look for:
- Factor loadings
Multiple threshold exist (as many rules of thumb), in our analysis we will use the standard 0.4 cut-off.
What thresholds should I use for factor loading cut-offs?
- Communalities
We use the standard cut-off of 0.5, all above are good.
fa_result <- fa(df_1, nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1, nfactors = 6, rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA5 PA1 PA2 PA4 PA3 PA6 h2 u2 com
## Im1 0.850 0.841 0.159 1.34
## Im2 0.842 0.796 0.204 1.25
## Im3 0.831 0.874 0.126 1.58
## Im4 0.850 0.893 0.107 1.51
## Im5 0.603 0.524 0.476 1.98
## Im6 0.783 0.708 0.292 1.31
## Im7 0.445 0.739 0.767 0.233 1.75
## Im8 0.725 0.716 0.284 1.72
## Im9 0.480 0.453 0.547 2.80
## Im10 0.821 0.793 0.207 1.37
## Im11 0.537 0.461 0.539 2.24
## Im12 0.796 0.758 0.242 1.42
## Im13 0.748 0.725 0.275 1.64
## Im14 0.794 0.760 0.240 1.43
## Im15 0.589 0.641 0.359 2.86
## Im16 0.468 0.461 0.539 3.00
## Im17 0.439 0.416 0.666 0.334 4.39
## Im18 0.438 0.605 0.395 4.18
## Im19 0.478 0.405 0.541 0.459 3.38
## Im20 0.839 0.775 0.225 1.21
## Im21 0.766 0.680 0.320 1.34
## Im22 0.798 0.804 0.196 1.56
##
## PA5 PA1 PA2 PA4 PA3 PA6
## SS loadings 2.864 2.782 2.608 2.514 2.395 2.080
## Proportion Var 0.130 0.126 0.119 0.114 0.109 0.095
## Cumulative Var 0.130 0.257 0.375 0.489 0.598 0.693
## Proportion Explained 0.188 0.183 0.171 0.165 0.157 0.136
## Cumulative Proportion 0.188 0.370 0.541 0.706 0.864 1.000
##
## Mean item complexity = 2.1
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 231 with the objective function = 17.57 with Chi Square = 5268.134
## df of the model are 114 and the objective function was 2.15
##
## The root mean square of the residuals (RMSR) is 0.033
## The df corrected root mean square of the residuals is 0.047
##
## The harmonic n.obs is 309 with the empirical chi square 157.019 with prob < 0.00471
## The total n.obs was 309 with Likelihood Chi Square = 635.908 with prob < 1.9e-73
##
## Tucker Lewis Index of factoring reliability = 0.7871
## RMSEA index = 0.1217 and the 90 % confidence intervals are 0.1128 0.1312
## BIC = -17.693
## Fit based upon off diagonal values = 0.993
## Measures of factor score adequacy
## PA5 PA1 PA2 PA4 PA3
## Correlation of (regression) scores with factors 0.933 0.949 0.930 0.906 0.930
## Multiple R square of scores with factors 0.871 0.900 0.864 0.821 0.865
## Minimum correlation of possible factor scores 0.741 0.800 0.729 0.643 0.731
## PA6
## Correlation of (regression) scores with factors 0.904
## Multiple R square of scores with factors 0.817
## Minimum correlation of possible factor scores 0.635
1. Factor loadings
We can see that we have 3 cross-loadings, Im7, Im17 and Im19.
Cross-Loadings (Measured with Complexity measure: com > 1):
Im17 > Im19 > Im7 > 1
2. Communalities
On the table, it is column h2
Low Communalities are :
Im9 < Im11 < Im16 < 0.5
Removing Im17 (Lowest Communality and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im17")], nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17")], nfactors = 6, rotate = "varimax",
## fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA1 PA5 PA2 PA3 PA4 PA6 h2 u2 com
## Im1 0.855 0.848 0.1519 1.33
## Im2 0.845 0.799 0.2007 1.25
## Im3 0.839 0.884 0.1159 1.55
## Im4 0.871 0.923 0.0769 1.46
## Im5 0.605 0.526 0.4743 1.97
## Im6 0.860 0.795 0.2050 1.15
## Im7 0.792 0.786 0.2142 1.51
## Im8 0.673 0.429 0.692 0.3077 1.99
## Im9 0.471 0.449 0.5511 2.83
## Im10 0.873 0.878 0.1222 1.32
## Im11 0.548 0.458 0.5423 2.13
## Im12 0.835 0.805 0.1950 1.33
## Im13 0.757 0.738 0.2618 1.63
## Im14 0.830 0.818 0.1820 1.40
## Im15 0.593 0.643 0.3570 2.80
## Im16 0.468 0.461 0.5390 3.00
## Im18 0.421 0.5791 4.38
## Im19 0.480 0.403 0.538 0.4623 3.36
## Im20 0.836 0.770 0.2296 1.21
## Im21 0.773 0.684 0.3157 1.30
## Im22 0.800 0.804 0.1959 1.55
##
## PA1 PA5 PA2 PA3 PA4 PA6
## SS loadings 2.778 2.690 2.447 2.382 2.367 2.057
## Proportion Var 0.132 0.128 0.117 0.113 0.113 0.098
## Cumulative Var 0.132 0.260 0.377 0.490 0.603 0.701
## Proportion Explained 0.189 0.183 0.166 0.162 0.161 0.140
## Cumulative Proportion 0.189 0.371 0.538 0.699 0.860 1.000
##
## Mean item complexity = 1.9
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 210 with the objective function = 16.063 with Chi Square = 4821.666
## df of the model are 99 and the objective function was 1.019
##
## The root mean square of the residuals (RMSR) is 0.025
## The df corrected root mean square of the residuals is 0.036
##
## The harmonic n.obs is 309 with the empirical chi square 81.338 with prob < 0.902
## The total n.obs was 309 with Likelihood Chi Square = 301.667 with prob < 2.4e-22
##
## Tucker Lewis Index of factoring reliability = 0.9055
## RMSEA index = 0.0813 and the 90 % confidence intervals are 0.0711 0.0921
## BIC = -265.934
## Fit based upon off diagonal values = 0.996
## Measures of factor score adequacy
## PA1 PA5 PA2 PA3 PA4
## Correlation of (regression) scores with factors 0.935 0.959 0.943 0.931 0.915
## Multiple R square of scores with factors 0.875 0.920 0.889 0.866 0.837
## Minimum correlation of possible factor scores 0.750 0.841 0.777 0.733 0.673
## PA6
## Correlation of (regression) scores with factors 0.924
## Multiple R square of scores with factors 0.854
## Minimum correlation of possible factor scores 0.709
Removing Im18 (Lowest loadings and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im17","Im18")], nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17", "Im18")], nfactors = 6,
## rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA1 PA5 PA2 PA3 PA4 PA6 h2 u2 com
## Im1 0.859 0.853 0.1475 1.32
## Im2 0.846 0.798 0.2016 1.24
## Im3 0.844 0.895 0.1053 1.55
## Im4 0.873 0.928 0.0722 1.47
## Im5 0.599 0.520 0.4797 2.00
## Im6 0.859 0.787 0.2125 1.14
## Im7 0.810 0.799 0.2007 1.44
## Im8 0.652 0.448 0.685 0.3146 2.12
## Im9 0.461 0.427 0.5731 2.87
## Im10 0.877 0.890 0.1099 1.33
## Im11 0.549 0.458 0.5420 2.14
## Im12 0.853 0.835 0.1654 1.31
## Im13 0.743 0.723 0.2772 1.67
## Im14 0.829 0.823 0.1771 1.42
## Im15 0.597 0.644 0.3563 2.76
## Im16 0.470 0.460 0.5402 2.98
## Im19 0.482 0.535 0.4651 3.33
## Im20 0.838 0.772 0.2276 1.20
## Im21 0.773 0.681 0.3192 1.29
## Im22 0.802 0.805 0.1952 1.54
##
## PA1 PA5 PA2 PA3 PA4 PA6
## SS loadings 2.738 2.565 2.379 2.353 2.223 2.059
## Proportion Var 0.137 0.128 0.119 0.118 0.111 0.103
## Cumulative Var 0.137 0.265 0.384 0.502 0.613 0.716
## Proportion Explained 0.191 0.179 0.166 0.164 0.155 0.144
## Cumulative Proportion 0.191 0.370 0.537 0.701 0.856 1.000
##
## Mean item complexity = 1.8
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 190 with the objective function = 15.509 with Chi Square = 4660.488
## df of the model are 85 and the objective function was 0.921
##
## The root mean square of the residuals (RMSR) is 0.025
## The df corrected root mean square of the residuals is 0.037
##
## The harmonic n.obs is 309 with the empirical chi square 72.686 with prob < 0.827
## The total n.obs was 309 with Likelihood Chi Square = 273.088 with prob < 1.36e-21
##
## Tucker Lewis Index of factoring reliability = 0.9046
## RMSEA index = 0.0846 and the 90 % confidence intervals are 0.0736 0.0961
## BIC = -214.246
## Fit based upon off diagonal values = 0.996
## Measures of factor score adequacy
## PA1 PA5 PA2 PA3 PA4
## Correlation of (regression) scores with factors 0.937 0.963 0.946 0.931 0.921
## Multiple R square of scores with factors 0.877 0.927 0.894 0.868 0.847
## Minimum correlation of possible factor scores 0.755 0.855 0.789 0.735 0.695
## PA6
## Correlation of (regression) scores with factors 0.926
## Multiple R square of scores with factors 0.858
## Minimum correlation of possible factor scores 0.717
Removing Im8 (Cross-loadings (High Complexity))
fa_result <- fa(df_1[!names(df_1) %in% c("Im17","Im18","Im8")], nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17", "Im18", "Im8")], nfactors = 6,
## rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA1 PA5 PA3 PA4 PA2 PA6 h2 u2 com
## Im1 0.859 0.853 0.1471 1.32
## Im2 0.844 0.796 0.2045 1.24
## Im3 0.845 0.893 0.1070 1.54
## Im4 0.875 0.928 0.0721 1.45
## Im5 0.598 0.519 0.4808 2.00
## Im6 0.884 0.817 0.1827 1.10
## Im7 0.806 0.768 0.2316 1.38
## Im9 0.464 0.427 0.5730 2.80
## Im10 0.882 0.924 0.0763 1.39
## Im11 0.553 0.455 0.5449 2.08
## Im12 0.861 0.841 0.1592 1.28
## Im13 0.740 0.717 0.2833 1.67
## Im14 0.811 0.824 0.1761 1.54
## Im15 0.599 0.645 0.3550 2.72
## Im16 0.472 0.454 0.5461 2.89
## Im19 0.483 0.405 0.534 0.4664 3.27
## Im20 0.836 0.770 0.2303 1.21
## Im21 0.774 0.682 0.3183 1.29
## Im22 0.803 0.807 0.1933 1.54
##
## PA1 PA5 PA3 PA4 PA2 PA6
## SS loadings 2.730 2.578 2.347 2.243 1.942 1.812
## Proportion Var 0.144 0.136 0.124 0.118 0.102 0.095
## Cumulative Var 0.144 0.279 0.403 0.521 0.623 0.719
## Proportion Explained 0.200 0.189 0.172 0.164 0.142 0.133
## Cumulative Proportion 0.200 0.389 0.561 0.725 0.867 1.000
##
## Mean item complexity = 1.8
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 171 with the objective function = 14.415 with Chi Square = 4336.563
## df of the model are 72 and the objective function was 0.819
##
## The root mean square of the residuals (RMSR) is 0.025
## The df corrected root mean square of the residuals is 0.039
##
## The harmonic n.obs is 309 with the empirical chi square 67.363 with prob < 0.633
## The total n.obs was 309 with Likelihood Chi Square = 243.141 with prob < 2.01e-20
##
## Tucker Lewis Index of factoring reliability = 0.9011
## RMSEA index = 0.0876 and the 90 % confidence intervals are 0.0758 0.1001
## BIC = -169.66
## Fit based upon off diagonal values = 0.996
## Measures of factor score adequacy
## PA1 PA5 PA3 PA4 PA2
## Correlation of (regression) scores with factors 0.936 0.963 0.931 0.923 0.930
## Multiple R square of scores with factors 0.877 0.928 0.867 0.852 0.866
## Minimum correlation of possible factor scores 0.754 0.855 0.735 0.703 0.731
## PA6
## Correlation of (regression) scores with factors 0.953
## Multiple R square of scores with factors 0.908
## Minimum correlation of possible factor scores 0.816
Removing Im19 (Low Communality and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im17","Im18","Im8","Im19")], nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17", "Im18", "Im8", "Im19")],
## nfactors = 6, rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA5 PA4 PA3 PA1 PA2 PA6 h2 u2 com
## Im1 0.876 0.894 0.1059 1.34
## Im2 0.863 0.839 0.1610 1.26
## Im3 0.843 0.886 0.1137 1.53
## Im4 0.884 0.938 0.0620 1.43
## Im5 0.615 0.538 0.4624 1.93
## Im6 0.886 0.820 0.1796 1.09
## Im7 0.805 0.765 0.2346 1.37
## Im9 0.464 0.428 0.5717 2.79
## Im10 0.892 0.937 0.0628 1.38
## Im11 0.553 0.454 0.5462 2.06
## Im12 0.866 0.843 0.1568 1.26
## Im13 0.743 0.715 0.2854 1.64
## Im14 0.812 0.822 0.1779 1.53
## Im15 0.560 0.623 0.3767 3.06
## Im16 0.405 0.396 0.6043 3.39
## Im20 0.844 0.779 0.2213 1.19
## Im21 0.773 0.679 0.3214 1.28
## Im22 0.801 0.805 0.1948 1.54
##
## PA5 PA4 PA3 PA1 PA2 PA6
## SS loadings 2.460 2.387 2.343 2.248 1.932 1.792
## Proportion Var 0.137 0.133 0.130 0.125 0.107 0.100
## Cumulative Var 0.137 0.269 0.399 0.524 0.632 0.731
## Proportion Explained 0.187 0.181 0.178 0.171 0.147 0.136
## Cumulative Proportion 0.187 0.368 0.546 0.717 0.864 1.000
##
## Mean item complexity = 1.7
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 153 with the objective function = 13.52 with Chi Square = 4071.795
## df of the model are 60 and the objective function was 0.48
##
## The root mean square of the residuals (RMSR) is 0.018
## The df corrected root mean square of the residuals is 0.029
##
## The harmonic n.obs is 309 with the empirical chi square 32.204 with prob < 0.999
## The total n.obs was 309 with Likelihood Chi Square = 142.579 with prob < 1.12e-08
##
## Tucker Lewis Index of factoring reliability = 0.9455
## RMSEA index = 0.0667 and the 90 % confidence intervals are 0.0528 0.0811
## BIC = -201.422
## Fit based upon off diagonal values = 0.998
## Measures of factor score adequacy
## PA5 PA4 PA3 PA1 PA2
## Correlation of (regression) scores with factors 0.966 0.950 0.933 0.925 0.931
## Multiple R square of scores with factors 0.933 0.902 0.870 0.856 0.867
## Minimum correlation of possible factor scores 0.867 0.804 0.740 0.712 0.734
## PA6
## Correlation of (regression) scores with factors 0.958
## Multiple R square of scores with factors 0.919
## Minimum correlation of possible factor scores 0.837
6 Factors - Conclusion
We removed Im17, Im18, Im8 and Im9 until achieving clear loadings separation.
fa.diagram(fa_result, sort = TRUE, adj = 1, rsize = 4, e.size = 0.07, main = "Factors Analysis with 6 factors", digits = 2, l.cex = 1)
Most Factors have good loadings (at least 2 above 0.7), while PA6 has only 2 variables loaded.
8 Factors
We will redo the same analysis with 8 factors this time and using varimax rotation as well.
fa_result <- fa(df_1, nfactors = 8, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1, nfactors = 8, rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA3 PA1 PA2 PA6 PA7 PA5 PA4 PA8 h2 u2 com
## Im1 0.879 0.949 0.0505 1.49
## Im2 0.822 0.832 0.1679 1.50
## Im3 0.803 0.877 0.1232 1.81
## Im4 0.858 0.939 0.0606 1.61
## Im5 0.620 0.568 0.4319 2.09
## Im6 0.845 0.773 0.2268 1.17
## Im7 0.819 0.808 0.1924 1.42
## Im8 0.619 0.474 0.700 0.2995 2.45
## Im9 0.447 0.444 0.5557 3.44
## Im10 0.870 0.887 0.1126 1.37
## Im11 0.552 0.467 0.5327 2.18
## Im12 0.851 0.841 0.1588 1.35
## Im13 0.724 0.730 0.2703 1.88
## Im14 0.850 0.860 0.1396 1.41
## Im15 0.442 0.423 0.668 0.3322 4.90
## Im16 0.732 0.744 0.2559 1.87
## Im17 0.830 0.923 0.0768 1.77
## Im18 0.757 0.785 0.2147 1.83
## Im19 0.561 0.640 0.3605 3.44
## Im20 0.849 0.790 0.2095 1.20
## Im21 0.769 0.684 0.3161 1.33
## Im22 0.797 0.799 0.2012 1.56
##
## PA3 PA1 PA2 PA6 PA7 PA5 PA4 PA8
## SS loadings 2.441 2.394 2.308 2.244 2.110 2.100 1.718 1.395
## Proportion Var 0.111 0.109 0.105 0.102 0.096 0.095 0.078 0.063
## Cumulative Var 0.111 0.220 0.325 0.427 0.523 0.618 0.696 0.760
## Proportion Explained 0.146 0.143 0.138 0.134 0.126 0.126 0.103 0.083
## Cumulative Proportion 0.146 0.289 0.427 0.562 0.688 0.814 0.917 1.000
##
## Mean item complexity = 2
## Test of the hypothesis that 8 factors are sufficient.
##
## df null model = 231 with the objective function = 17.57 with Chi Square = 5268.134
## df of the model are 83 and the objective function was 0.479
##
## The root mean square of the residuals (RMSR) is 0.012
## The df corrected root mean square of the residuals is 0.019
##
## The harmonic n.obs is 309 with the empirical chi square 19.471 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 140.985 with prob < 7.46e-05
##
## Tucker Lewis Index of factoring reliability = 0.9674
## RMSEA index = 0.0474 and the 90 % confidence intervals are 0.0337 0.0609
## BIC = -334.883
## Fit based upon off diagonal values = 0.999
## Measures of factor score adequacy
## PA3 PA1 PA2 PA6 PA7
## Correlation of (regression) scores with factors 0.934 0.958 0.947 0.920 0.924
## Multiple R square of scores with factors 0.872 0.917 0.898 0.846 0.854
## Minimum correlation of possible factor scores 0.745 0.834 0.795 0.692 0.709
## PA5 PA4 PA8
## Correlation of (regression) scores with factors 0.964 0.943 0.838
## Multiple R square of scores with factors 0.930 0.890 0.703
## Minimum correlation of possible factor scores 0.860 0.780 0.405
1. Factor loadings
We can see that we have 2 cross-loadings, Im8 and Im15. Therefore 1 less cross-loadings than 6 Factors Analysis.
Cross-Loadings (Measured with Complexity measure: com > 1):
Im15 > Im8 > 1
2. Communalities
On the table, it is column h2
Low Communalities are :
Im9 < Im11 < 0.5 (same low items communalities than in 6 Factor analysis )
Removing Im15 (Low Communality and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im15")], nfactors = 8, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im15")], nfactors = 8, rotate = "varimax",
## fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA3 PA1 PA2 PA5 PA7 PA6 PA4 PA8 h2 u2 com
## Im1 0.864 0.935 0.0647 1.55
## Im2 0.825 0.845 0.1553 1.52
## Im3 0.804 0.878 0.1225 1.80
## Im4 0.856 0.936 0.0639 1.61
## Im5 0.625 0.573 0.4275 2.06
## Im6 0.850 0.781 0.2190 1.16
## Im7 0.817 0.805 0.1952 1.42
## Im8 0.623 0.472 0.698 0.3019 2.41
## Im9 0.444 0.442 0.5578 3.46
## Im10 0.881 0.902 0.0979 1.35
## Im11 0.556 0.471 0.5294 2.14
## Im12 0.852 0.841 0.1587 1.34
## Im13 0.722 0.725 0.2749 1.88
## Im14 0.837 0.844 0.1564 1.43
## Im16 0.675 0.677 0.3234 2.11
## Im17 0.826 0.912 0.0883 1.75
## Im18 0.765 0.794 0.2060 1.80
## Im19 0.609 0.686 0.3136 3.02
## Im20 0.854 0.796 0.2037 1.19
## Im21 0.770 0.683 0.3169 1.32
## Im22 0.796 0.795 0.2051 1.55
##
## PA3 PA1 PA2 PA5 PA7 PA6 PA4 PA8
## SS loadings 2.395 2.369 2.303 2.152 2.086 1.841 1.699 1.174
## Proportion Var 0.114 0.113 0.110 0.102 0.099 0.088 0.081 0.056
## Cumulative Var 0.114 0.227 0.336 0.439 0.538 0.626 0.707 0.763
## Proportion Explained 0.150 0.148 0.144 0.134 0.130 0.115 0.106 0.073
## Cumulative Proportion 0.150 0.297 0.441 0.575 0.706 0.821 0.927 1.000
##
## Mean item complexity = 1.8
## Test of the hypothesis that 8 factors are sufficient.
##
## df null model = 210 with the objective function = 16.523 with Chi Square = 4959.748
## df of the model are 70 and the objective function was 0.434
##
## The root mean square of the residuals (RMSR) is 0.012
## The df corrected root mean square of the residuals is 0.02
##
## The harmonic n.obs is 309 with the empirical chi square 17.262 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 127.971 with prob < 2.9e-05
##
## Tucker Lewis Index of factoring reliability = 0.9627
## RMSEA index = 0.0517 and the 90 % confidence intervals are 0.0374 0.0659
## BIC = -273.363
## Fit based upon off diagonal values = 0.999
## Measures of factor score adequacy
## PA3 PA1 PA2 PA5 PA7
## Correlation of (regression) scores with factors 0.935 0.954 0.949 0.919 0.925
## Multiple R square of scores with factors 0.873 0.911 0.900 0.844 0.856
## Minimum correlation of possible factor scores 0.747 0.821 0.800 0.688 0.712
## PA6 PA4 PA8
## Correlation of (regression) scores with factors 0.957 0.938 0.806
## Multiple R square of scores with factors 0.917 0.881 0.649
## Minimum correlation of possible factor scores 0.834 0.761 0.299
Removing Im8 (Low Communality and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im15","Im8")], nfactors = 8, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im15", "Im8")], nfactors = 8,
## rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA3 PA1 PA4 PA5 PA6 PA2 PA7 PA8 h2 u2 com
## Im1 0.898 0.990 0.0105 1.49
## Im2 0.792 0.800 0.1997 1.61
## Im3 0.800 0.875 0.1250 1.82
## Im4 0.855 0.937 0.0632 1.62
## Im5 0.627 0.575 0.4248 2.06
## Im6 0.885 0.827 0.1732 1.12
## Im7 0.804 0.766 0.2335 1.39
## Im9 0.443 0.440 0.5599 3.42
## Im10 0.914 0.980 0.0201 1.37
## Im11 0.562 0.468 0.5320 2.07
## Im12 0.857 0.845 0.1553 1.32
## Im13 0.722 0.723 0.2773 1.86
## Im14 0.780 0.789 0.2110 1.64
## Im16 0.616 0.601 0.3986 2.35
## Im17 0.864 0.969 0.0311 1.66
## Im18 0.730 0.752 0.2484 1.92
## Im19 0.689 0.758 0.2415 2.40
## Im20 0.852 0.794 0.2064 1.19
## Im21 0.770 0.683 0.3173 1.32
## Im22 0.798 0.798 0.2024 1.55
##
## PA3 PA1 PA4 PA5 PA6 PA2 PA7 PA8
## SS loadings 2.384 2.345 2.169 1.936 1.832 1.788 1.698 1.216
## Proportion Var 0.119 0.117 0.108 0.097 0.092 0.089 0.085 0.061
## Cumulative Var 0.119 0.236 0.345 0.442 0.533 0.623 0.708 0.768
## Proportion Explained 0.155 0.153 0.141 0.126 0.119 0.116 0.110 0.079
## Cumulative Proportion 0.155 0.308 0.449 0.575 0.694 0.810 0.921 1.000
##
## Mean item complexity = 1.8
## Test of the hypothesis that 8 factors are sufficient.
##
## df null model = 190 with the objective function = 15.431 with Chi Square = 4636.932
## df of the model are 58 and the objective function was 0.36
##
## The root mean square of the residuals (RMSR) is 0.011
## The df corrected root mean square of the residuals is 0.021
##
## The harmonic n.obs is 309 with the empirical chi square 15.22 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 106.281 with prob < 0.000114
##
## Tucker Lewis Index of factoring reliability = 0.9638
## RMSEA index = 0.0518 and the 90 % confidence intervals are 0.036 0.0674
## BIC = -226.253
## Fit based upon off diagonal values = 0.999
## Measures of factor score adequacy
## PA3 PA1 PA4 PA5 PA6
## Correlation of (regression) scores with factors 0.934 0.955 0.922 0.931 0.989
## Multiple R square of scores with factors 0.873 0.911 0.850 0.867 0.978
## Minimum correlation of possible factor scores 0.746 0.823 0.700 0.735 0.955
## PA2 PA7 PA8
## Correlation of (regression) scores with factors 0.980 0.973 0.818
## Multiple R square of scores with factors 0.961 0.947 0.669
## Minimum correlation of possible factor scores 0.922 0.895 0.338
8 Factors - Conclusion
We removed Im15, Im8 until achieving clear loadings separation. Therefore we removed 2 variables less than 6 Factors Analysis done previously
fa.diagram(fa_result, sort = TRUE, adj = 1, rsize = 4, e.size = 0.07, main = "Factors Analysis with 8 factors", digits = 2, l.cex = 1)
Most Factors have nice loadings (at least 2 above 0.7), but PA8 has 2 variables with only 0.62-0.69 loadings (but close to 0.7).
Deciding between 6 or 8 Factors
Here we show the results of the final factor analysis with 6 and 8 Factors and then evaluate how we decided between the two solutions.
fa_result6 <- fa(df_1[!names(df_1) %in% c("Im17","Im18","Im8","Im19")], nfactors = 6, fm = "pa", rotate = "varimax")
fa_result8 <- fa(df_1[!names(df_1) %in% c("Im15","Im8")], nfactors = 8, fm = "pa", rotate = "varimax")
fa_result6
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17", "Im18", "Im8", "Im19")],
## nfactors = 6, rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA5 PA4 PA3 PA1 PA2 PA6 h2 u2 com
## Im1 0.19 0.88 0.22 0.18 0.07 0.08 0.89 0.106 1.3
## Im2 0.22 0.86 0.16 0.10 0.07 0.08 0.84 0.161 1.3
## Im3 0.84 0.21 0.22 0.22 0.12 0.14 0.89 0.114 1.5
## Im4 0.88 0.21 0.18 0.20 0.14 0.13 0.94 0.062 1.4
## Im5 0.62 0.24 0.18 0.20 0.08 0.15 0.54 0.462 1.9
## Im6 0.09 0.06 0.07 0.06 0.89 0.12 0.82 0.180 1.1
## Im7 0.06 0.08 0.11 0.11 0.80 0.29 0.77 0.235 1.4
## Im9 0.19 0.13 0.12 0.36 0.46 0.11 0.43 0.572 2.8
## Im10 0.19 0.10 0.05 0.21 0.23 0.89 0.94 0.063 1.4
## Im11 0.18 0.11 0.18 0.55 0.09 0.25 0.45 0.546 2.1
## Im12 0.17 0.15 0.10 0.87 0.10 0.16 0.84 0.157 1.3
## Im13 0.22 0.24 0.19 0.74 0.14 0.07 0.71 0.285 1.6
## Im14 0.17 0.14 0.06 0.20 0.27 0.81 0.82 0.178 1.5
## Im15 0.26 0.56 0.26 0.37 0.17 0.10 0.62 0.377 3.1
## Im16 0.35 0.40 0.13 0.20 0.06 0.22 0.40 0.604 3.4
## Im20 0.14 0.11 0.84 0.17 0.03 0.04 0.78 0.221 1.2
## Im21 0.16 0.18 0.77 0.12 0.08 0.04 0.68 0.321 1.3
## Im22 0.21 0.24 0.80 0.14 0.19 0.06 0.81 0.195 1.5
##
## PA5 PA4 PA3 PA1 PA2 PA6
## SS loadings 2.46 2.39 2.34 2.25 1.93 1.79
## Proportion Var 0.14 0.13 0.13 0.12 0.11 0.10
## Cumulative Var 0.14 0.27 0.40 0.52 0.63 0.73
## Proportion Explained 0.19 0.18 0.18 0.17 0.15 0.14
## Cumulative Proportion 0.19 0.37 0.55 0.72 0.86 1.00
##
## Mean item complexity = 1.7
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 153 with the objective function = 13.52 with Chi Square = 4071.79
## df of the model are 60 and the objective function was 0.48
##
## The root mean square of the residuals (RMSR) is 0.02
## The df corrected root mean square of the residuals is 0.03
##
## The harmonic n.obs is 309 with the empirical chi square 32.2 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 142.58 with prob < 1.1e-08
##
## Tucker Lewis Index of factoring reliability = 0.946
## RMSEA index = 0.067 and the 90 % confidence intervals are 0.053 0.081
## BIC = -201.42
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## PA5 PA4 PA3 PA1 PA2 PA6
## Correlation of (regression) scores with factors 0.97 0.95 0.93 0.93 0.93 0.96
## Multiple R square of scores with factors 0.93 0.90 0.87 0.86 0.87 0.92
## Minimum correlation of possible factor scores 0.87 0.80 0.74 0.71 0.73 0.84
fa_result8
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im15", "Im8")], nfactors = 8,
## rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA3 PA1 PA4 PA5 PA6 PA2 PA7 PA8 h2 u2 com
## Im1 0.23 0.18 0.19 0.07 0.90 0.08 0.13 0.18 0.99 0.010 1.5
## Im2 0.18 0.21 0.11 0.07 0.79 0.08 0.17 0.21 0.80 0.200 1.6
## Im3 0.22 0.80 0.20 0.11 0.14 0.13 0.17 0.26 0.88 0.125 1.8
## Im4 0.18 0.86 0.20 0.13 0.15 0.13 0.16 0.23 0.94 0.063 1.6
## Im5 0.18 0.63 0.19 0.06 0.21 0.17 0.18 0.07 0.58 0.425 2.1
## Im6 0.07 0.08 0.05 0.88 0.04 0.12 0.11 0.05 0.83 0.173 1.1
## Im7 0.11 0.06 0.11 0.80 0.06 0.28 0.07 0.06 0.77 0.234 1.4
## Im9 0.12 0.17 0.33 0.44 0.08 0.12 0.26 0.06 0.44 0.560 3.4
## Im10 0.05 0.16 0.20 0.22 0.05 0.91 0.05 0.15 0.98 0.020 1.4
## Im11 0.18 0.18 0.56 0.09 0.09 0.25 0.08 0.06 0.47 0.532 2.1
## Im12 0.10 0.15 0.86 0.09 0.09 0.14 0.14 0.15 0.84 0.155 1.3
## Im13 0.18 0.19 0.72 0.12 0.18 0.08 0.26 0.11 0.72 0.277 1.9
## Im14 0.06 0.16 0.20 0.28 0.11 0.78 0.05 0.14 0.79 0.211 1.6
## Im16 0.12 0.26 0.15 0.05 0.24 0.19 0.15 0.62 0.60 0.399 2.3
## Im17 0.20 0.20 0.22 0.17 0.19 0.06 0.86 0.17 0.97 0.031 1.7
## Im18 0.19 0.24 0.24 0.16 0.14 0.06 0.73 0.13 0.75 0.248 1.9
## Im19 0.16 0.28 0.20 0.14 0.25 0.16 0.18 0.69 0.76 0.242 2.4
## Im20 0.85 0.12 0.17 0.03 0.07 0.03 0.07 0.12 0.79 0.206 1.2
## Im21 0.77 0.15 0.11 0.08 0.15 0.04 0.15 0.06 0.68 0.317 1.3
## Im22 0.80 0.20 0.13 0.18 0.20 0.07 0.15 0.07 0.80 0.202 1.5
##
## PA3 PA1 PA4 PA5 PA6 PA2 PA7 PA8
## SS loadings 2.38 2.35 2.17 1.94 1.83 1.79 1.70 1.22
## Proportion Var 0.12 0.12 0.11 0.10 0.09 0.09 0.08 0.06
## Cumulative Var 0.12 0.24 0.34 0.44 0.53 0.62 0.71 0.77
## Proportion Explained 0.16 0.15 0.14 0.13 0.12 0.12 0.11 0.08
## Cumulative Proportion 0.16 0.31 0.45 0.57 0.69 0.81 0.92 1.00
##
## Mean item complexity = 1.8
## Test of the hypothesis that 8 factors are sufficient.
##
## df null model = 190 with the objective function = 15.43 with Chi Square = 4636.93
## df of the model are 58 and the objective function was 0.36
##
## The root mean square of the residuals (RMSR) is 0.01
## The df corrected root mean square of the residuals is 0.02
##
## The harmonic n.obs is 309 with the empirical chi square 15.22 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 106.28 with prob < 0.00011
##
## Tucker Lewis Index of factoring reliability = 0.964
## RMSEA index = 0.052 and the 90 % confidence intervals are 0.036 0.067
## BIC = -226.25
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## PA3 PA1 PA4 PA5 PA6 PA2
## Correlation of (regression) scores with factors 0.93 0.95 0.92 0.93 0.99 0.98
## Multiple R square of scores with factors 0.87 0.91 0.85 0.87 0.98 0.96
## Minimum correlation of possible factor scores 0.75 0.82 0.70 0.73 0.96 0.92
## PA7 PA8
## Correlation of (regression) scores with factors 0.97 0.82
## Multiple R square of scores with factors 0.95 0.67
## Minimum correlation of possible factor scores 0.89 0.34
We can see that for 6 Factors Analysis, we obtain a cumulative proportion variance of 0.73. In total, the extracted factors explain 73% of the variance.
For 8 Factors Analysis, we obtain a cumulative proportion variance of 0.77. In total, the extracted factors explain 77% of the variance.
BIC is lower with 8 factors than 6 factors, therefore may allow more generalization in future sample.
We should also check the root mean square error of approximation (RMSEA). An better value should be closer to 0. In 6 Factors Analysis we have 0.067 and in 8 Factors Analysis we have 0.052 (closer to 0).
Finally, we must check the Tucker-Lewis Index (TLI). An acceptable value must be over 0.9. In 6 Factors Analysis we have 0.946 and in 8 Factors Analysis we have 0.964.
Therefore 8 Factors Analysis is overall better, with better BIC, RMSR and TLI and also explain more the total variance with 77%.
Choosing the Optimal Number of Factors in Exploratory Factor Analysis: A Model Selection Perspective
Labeling 8 Factors
Here we label the 8 factors according to the questions asked to receive the images which load on to the factor
colnames(fa_result8$loadings) <- c("Shopping Experience", "Store Decoration","Luxury Brands","French Culture","Product Assortment","Gourmet Food","Trendiness","Professionalism")
Shopping_Experience <- c("Im20","Im21","Im22")
Store_Decoration <- c("Im3","Im4","Im5")
Luxury_Brands <- c("Im11","Im12","Im13")
French_Culture <- c("Im6","Im7","Im9")
Product_Assortment <- c("Im1","Im2")
Gourmet_Food <- c("Im10","Im14")
Trendiness <- c("Im17","Im18")
Professionalism <- c("Im16","Im19")
And after renaming the factors we can now plot the loadings of the factors.
fa.diagram(fa_result8, sort = TRUE, adj = 1, rsize = 4, e.size = 0.061, main = "Conclusion of Factors Analysis - with 8 labeled factors", digits = 2, l.cex = 1)
Internal consistency reliability
Our next step is to assess the internal consistency reliability of the factors that were identified through the EFA. To accomplish this, we will use Cronbach’s alpha. We will evaluate the reliability of each factor individually by incorporating only the chosen items for that particular factor.
We need to look at:
1. Cronbach’s alpha (raw_alpha) which indicates the internal consistency reliability as well as 2. Corrected item-total correlation (average_r)
The interpretation is detailed as follows (DeVellis, 2012, pp. 95–96):
Shopping Experience
alpha.pa1 <- psych::alpha(df_1[Shopping_Experience])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8947029 0.8951786 0.8514649 0.7400356 8.54004 0.01029882 4.677454 1.341113
## median_r
## 0.7296095
raw_alpha is over 0.7 and average items correlation is above 0.5
Store Decoration
alpha.pa1 <- psych::alpha(df_1[Store_Decoration])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9080535 0.9080107 0.8910999 0.7669149 9.870833 0.009512795 4.909385 1.251142
## median_r
## 0.713708
raw_alpha is over 0.7 and average items correlation is above 0.5
Luxury Brands
alpha.pa1 <- psych::alpha(df_1[Luxury_Brands])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8362383 0.8369592 0.7932492 0.631152 5.133432 0.01631641 5.549083 1.033799
## median_r
## 0.5951255
raw_alpha is over 0.7 and average items correlation is above 0.5
French Culture
alpha.pa1 <- psych::alpha(df_1[French_Culture])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.7974734 0.8043581 0.7661015 0.5781409 4.111379 0.02082013 5.532902 1.061296
## median_r
## 0.4812433
raw_alpha is over 0.7 and average items correlation is above 0.5
Product Assortment
alpha.pa1 <- psych::alpha(df_1[Product_Assortment])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9370045 0.9377564 0.8828073 0.8828073 15.06591 0.007118763 4.847896 1.27965
## median_r
## 0.8828073
raw_alpha is over 0.7 and average items correlation is above 0.5
Gourmet Food
alpha.pa1 <- psych::alpha(df_1[Gourmet_Food])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9327078 0.9327084 0.8739021 0.8739021 13.8607 0.007656198 6.106796 0.8498963
## median_r
## 0.8739021
raw_alpha is over 0.7 and average items correlation is above 0.5
Trendiness
alpha.pa1 <- psych::alpha(df_1[Trendiness])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9155341 0.9175086 0.8475898 0.8475898 11.12248 0.009476765 4.737864 1.287763
## median_r
## 0.8475898
raw_alpha is over 0.7 and average items correlation is above 0.5
Professionalism
alpha.pa1 <- psych::alpha(df_1[Professionalism])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8027054 0.8029503 0.6707744 0.6707744 4.074861 0.02242662 5.082524 1.119696
## median_r
## 0.6707744
raw_alpha is over 0.7 and average items correlation is above 0.5
Our assessment suggests that the factors extracted are reliable, and therefore it is advisable to retain all the items related to these factors.
Dimensions by which Galeries Layfayette is perceived?
Here we show the dimensions by which galeries layfayette is perceived according to EFA.
fa.diagram(fa_result8, sort = TRUE, adj = 1, rsize = 4, e.size = 0.061, main = "Galeries Lafayette - Perception Dimensions", digits = 2, l.cex = 1)
Dimensions Definitions:
Product Assortment: This group pertains to the variety and range of products offered by the store.
Store Decoration: This group pertains to the aesthetic elements of the store’s interior and exterior, such as the artistic and creative decoration of the sales area, and the appealing arrangement of shop windows.
French Culture: This group pertains to elements of French culture, such as French savoir-vivre, fashion.
Gourmet Food: This group pertains to high-quality offered by the store.
Luxury Brands: This group pertains to the presence of luxury and designer brands in the store.
Professionalism: This group pertains to elements of professionalism, such as the store’s professional appearance towards customers and professional organization.
Trendiness: This group pertains to the store’s ability to stay current and up-to-date with the latest trends in the market.
Shopping Experience: This group pertains to the overall shopping experience, including elements such as relaxing shopping, a great place to stroll, and an intimate shop atmosphere.
Confirmatory Factor Analysis
In this part we will do a confirmatory factor analysis which is based on the results of EFA from before.
From Assistant For confirmatory factor analysis (CFA) and structural equation modeling (SEM), please use the raw data (which includes the missing values) to perform CFA and SEM, and use maximum likelihood (ML) to handle the missing data.
df <- read.csv2('Case Study III_Structural Equation Modeling.csv', na.strings = '999', sep = ',')
Summary of CFA Model with 8 Factors
Here we fit the CFA model and look at its summary.
model_CFA <-"
Shopping_Experience =~ Im20+Im22+Im21
Store_Decoration =~ Im3+Im4+Im5
Luxury_Brands =~ Im12+Im13+Im11
French_Culture =~ Im6+Im7+Im9
Product_Assortment =~ Im1+Im2
Gourmet_Food =~ Im10+Im14
Trendiness =~ Im17+Im18
Professionalism =~ Im16+Im19"
fit_CFA <- lavaan::cfa(model_CFA, data=df, missing="ML")
summary(fit_CFA,fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6.15 ended normally after 102 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 88
##
## Number of observations 553
## Number of missing patterns 82
##
## Model Test User Model:
##
## Test statistic 383.534
## Degrees of freedom 142
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 7789.413
## Degrees of freedom 190
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.968
## Tucker-Lewis Index (TLI) 0.957
##
## Robust Comparative Fit Index (CFI) 0.968
## Robust Tucker-Lewis Index (TLI) 0.957
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -13802.030
## Loglikelihood unrestricted model (H1) -13610.263
##
## Akaike (AIC) 27780.060
## Bayesian (BIC) 28159.811
## Sample-size adjusted Bayesian (SABIC) 27880.460
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.055
## 90 Percent confidence interval - lower 0.049
## 90 Percent confidence interval - upper 0.062
## P-value H_0: RMSEA <= 0.050 0.087
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.057
## 90 Percent confidence interval - lower 0.050
## 90 Percent confidence interval - upper 0.064
## P-value H_0: Robust RMSEA <= 0.050 0.055
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.052
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience =~
## Im20 1.000 1.264 0.845
## Im22 1.060 0.047 22.590 0.000 1.341 0.877
## Im21 0.849 0.041 20.818 0.000 1.073 0.783
## Store_Decoration =~
## Im3 1.000 1.236 0.937
## Im4 1.056 0.025 42.717 0.000 1.305 0.969
## Im5 0.818 0.034 23.813 0.000 1.011 0.760
## Luxury_Brands =~
## Im12 1.000 0.991 0.872
## Im13 1.038 0.050 20.653 0.000 1.029 0.855
## Im11 0.709 0.047 15.048 0.000 0.703 0.615
## French_Culture =~
## Im6 1.000 1.002 0.835
## Im7 1.107 0.050 22.219 0.000 1.109 0.919
## Im9 0.789 0.057 13.916 0.000 0.790 0.585
## Product_Assortment =~
## Im1 1.000 1.305 0.980
## Im2 0.885 0.033 27.039 0.000 1.155 0.899
## Gourmet_Food =~
## Im10 1.000 0.812 0.924
## Im14 1.014 0.035 28.587 0.000 0.823 0.952
## Trendiness =~
## Im17 1.000 1.204 0.968
## Im18 0.995 0.041 24.250 0.000 1.197 0.857
## Professionalism =~
## Im16 1.000 0.922 0.766
## Im19 1.045 0.061 17.188 0.000 0.963 0.856
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience ~~
## Store_Decoratn 0.729 0.082 8.911 0.000 0.467 0.467
## Luxury_Brands 0.524 0.068 7.693 0.000 0.418 0.418
## French_Culture 0.446 0.066 6.749 0.000 0.352 0.352
## Prdct_Assrtmnt 0.739 0.085 8.728 0.000 0.448 0.448
## Gourmet_Food 0.303 0.051 5.951 0.000 0.295 0.295
## Trendiness 0.786 0.081 9.715 0.000 0.517 0.517
## Professionalsm 0.557 0.069 8.091 0.000 0.478 0.478
## Store_Decoration ~~
## Luxury_Brands 0.577 0.064 8.957 0.000 0.471 0.471
## French_Culture 0.449 0.063 7.099 0.000 0.363 0.363
## Prdct_Assrtmnt 0.711 0.079 9.032 0.000 0.440 0.440
## Gourmet_Food 0.418 0.050 8.401 0.000 0.417 0.417
## Trendiness 0.770 0.076 10.141 0.000 0.517 0.517
## Professionalsm 0.744 0.071 10.469 0.000 0.653 0.653
## Luxury_Brands ~~
## French_Culture 0.337 0.052 6.460 0.000 0.340 0.340
## Prdct_Assrtmnt 0.618 0.068 9.135 0.000 0.478 0.478
## Gourmet_Food 0.364 0.043 8.499 0.000 0.452 0.452
## Trendiness 0.676 0.065 10.423 0.000 0.566 0.566
## Professionalsm 0.483 0.055 8.826 0.000 0.529 0.529
## French_Culture ~~
## Prdct_Assrtmnt 0.321 0.063 5.121 0.000 0.246 0.246
## Gourmet_Food 0.490 0.047 10.536 0.000 0.603 0.603
## Trendiness 0.439 0.062 7.087 0.000 0.364 0.364
## Professionalsm 0.360 0.052 6.937 0.000 0.391 0.391
## Product_Assortment ~~
## Gourmet_Food 0.328 0.050 6.581 0.000 0.309 0.309
## Trendiness 0.817 0.079 10.362 0.000 0.519 0.519
## Professionalsm 0.718 0.072 9.961 0.000 0.597 0.597
## Gourmet_Food ~~
## Trendiness 0.318 0.047 6.804 0.000 0.325 0.325
## Professionalsm 0.373 0.043 8.600 0.000 0.498 0.498
## Trendiness ~~
## Professionalsm 0.667 0.066 10.043 0.000 0.601 0.601
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 4.672 0.064 73.178 0.000 4.672 3.123
## .Im22 4.279 0.065 65.401 0.000 4.279 2.799
## .Im21 5.139 0.058 87.970 0.000 5.139 3.751
## .Im3 4.995 0.056 88.565 0.000 4.995 3.786
## .Im4 4.999 0.057 86.988 0.000 4.999 3.712
## .Im5 5.035 0.057 87.848 0.000 5.035 3.787
## .Im12 5.666 0.049 116.093 0.000 5.666 4.983
## .Im13 5.448 0.052 105.619 0.000 5.448 4.524
## .Im11 5.653 0.049 115.273 0.000 5.653 4.943
## .Im6 5.826 0.051 113.774 0.000 5.826 4.856
## .Im7 5.751 0.052 111.068 0.000 5.751 4.766
## .Im9 5.075 0.058 87.408 0.000 5.075 3.756
## .Im1 4.790 0.057 84.203 0.000 4.790 3.597
## .Im2 4.857 0.055 88.356 0.000 4.857 3.779
## .Im10 6.100 0.037 162.799 0.000 6.100 6.937
## .Im14 6.138 0.037 165.865 0.000 6.138 7.093
## .Im17 5.025 0.053 94.529 0.000 5.025 4.041
## .Im18 4.595 0.060 76.455 0.000 4.595 3.287
## .Im16 5.135 0.052 99.150 0.000 5.135 4.269
## .Im19 5.145 0.048 106.954 0.000 5.145 4.574
## Shoppng_Exprnc 0.000 0.000 0.000
## Store_Decoratn 0.000 0.000 0.000
## Luxury_Brands 0.000 0.000 0.000
## French_Culture 0.000 0.000 0.000
## Prdct_Assrtmnt 0.000 0.000 0.000
## Gourmet_Food 0.000 0.000 0.000
## Trendiness 0.000 0.000 0.000
## Professionalsm 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 0.639 0.061 10.445 0.000 0.639 0.285
## .Im22 0.540 0.063 8.515 0.000 0.540 0.231
## .Im21 0.726 0.057 12.672 0.000 0.726 0.387
## .Im3 0.213 0.024 8.760 0.000 0.213 0.123
## .Im4 0.109 0.024 4.524 0.000 0.109 0.060
## .Im5 0.747 0.049 15.217 0.000 0.747 0.422
## .Im12 0.310 0.040 7.833 0.000 0.310 0.239
## .Im13 0.390 0.045 8.771 0.000 0.390 0.269
## .Im11 0.814 0.055 14.803 0.000 0.814 0.622
## .Im6 0.436 0.042 10.443 0.000 0.436 0.303
## .Im7 0.227 0.042 5.343 0.000 0.227 0.156
## .Im9 1.201 0.080 15.032 0.000 1.201 0.658
## .Im1 0.070 0.050 1.383 0.167 0.070 0.039
## .Im2 0.317 0.044 7.242 0.000 0.317 0.192
## .Im10 0.113 0.019 5.935 0.000 0.113 0.146
## .Im14 0.071 0.019 3.764 0.000 0.071 0.094
## .Im17 0.096 0.045 2.153 0.031 0.096 0.062
## .Im18 0.520 0.054 9.566 0.000 0.520 0.266
## .Im16 0.598 0.052 11.498 0.000 0.598 0.413
## .Im19 0.338 0.045 7.481 0.000 0.338 0.267
## Shoppng_Exprnc 1.599 0.138 11.620 0.000 1.000 1.000
## Store_Decoratn 1.527 0.107 14.326 0.000 1.000 1.000
## Luxury_Brands 0.983 0.084 11.680 0.000 1.000 1.000
## French_Culture 1.003 0.089 11.297 0.000 1.000 1.000
## Prdct_Assrtmnt 1.704 0.118 14.391 0.000 1.000 1.000
## Gourmet_Food 0.660 0.049 13.357 0.000 1.000 1.000
## Trendiness 1.450 0.104 13.998 0.000 1.000 1.000
## Professionalsm 0.849 0.088 9.644 0.000 1.000 1.000
Modification indices of CFA Model with 8 Factor
modificationindices(fit_CFA) %>% filter(mi>10)
## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 Shopping_Experience =~ Im12 11.029 -0.115 -0.145 -0.128 -0.128
## 2 Shopping_Experience =~ Im9 20.552 0.204 0.258 0.191 0.191
## 3 Store_Decoration =~ Im9 19.199 0.194 0.240 0.178 0.178
## 4 Luxury_Brands =~ Im6 11.249 -0.140 -0.139 -0.116 -0.116
## 5 Luxury_Brands =~ Im9 74.107 0.496 0.492 0.364 0.364
## 6 Product_Assortment =~ Im20 14.739 -0.151 -0.197 -0.131 -0.131
## 7 Product_Assortment =~ Im12 10.703 -0.111 -0.145 -0.128 -0.128
## 8 Product_Assortment =~ Im13 14.024 0.133 0.174 0.144 0.144
## 9 Product_Assortment =~ Im9 22.723 0.190 0.248 0.183 0.183
## 10 Gourmet_Food =~ Im11 12.787 0.215 0.175 0.153 0.153
## 11 Gourmet_Food =~ Im6 11.064 -0.237 -0.193 -0.161 -0.161
## 12 Trendiness =~ Im12 17.366 -0.180 -0.217 -0.190 -0.190
## 13 Trendiness =~ Im13 23.945 0.220 0.265 0.220 0.220
## 14 Trendiness =~ Im7 17.707 -0.148 -0.178 -0.148 -0.148
## 15 Trendiness =~ Im9 58.323 0.350 0.422 0.312 0.312
## 16 Professionalism =~ Im9 28.665 0.349 0.322 0.238 0.238
## 17 Im20 ~~ Im21 11.693 0.231 0.231 0.339 0.339
## 18 Im22 ~~ Im21 15.187 -0.286 -0.286 -0.457 -0.457
## 19 Im12 ~~ Im11 13.264 0.145 0.145 0.288 0.288
## 20 Im13 ~~ Im11 21.231 -0.190 -0.190 -0.338 -0.338
## 21 Im13 ~~ Im1 10.737 0.068 0.068 0.410 0.410
## 22 Im6 ~~ Im7 26.792 0.475 0.475 1.511 1.511
Im9 is the main issue here, with mi over 10 < 19 < <20.5 < 22.7< 74.
Individual item Reliability
std.loadings<- inspect(fit_CFA, what="std")$lambda
check=std.loadings
check[check>0] <- 1
std.loadings[std.loadings==0] <- NA
std.loadings2 <- std.loadings^2
std.theta<- inspect(fit_CFA, what="std")$theta
#Individual item Reliability (should be larger than 0.4)
IIR=std.loadings2/(colSums(std.theta)+std.loadings2)
IIR
## Shpp_E Str_Dc Lxry_B Frnc_C Prdc_A Grmt_F Trndns Prfssn
## Im20 0.715 NA NA NA NA NA NA NA
## Im22 0.769 NA NA NA NA NA NA NA
## Im21 0.613 NA NA NA NA NA NA NA
## Im3 NA 0.877 NA NA NA NA NA NA
## Im4 NA 0.940 NA NA NA NA NA NA
## Im5 NA 0.578 NA NA NA NA NA NA
## Im12 NA NA 0.761 NA NA NA NA NA
## Im13 NA NA 0.731 NA NA NA NA NA
## Im11 NA NA 0.378 NA NA NA NA NA
## Im6 NA NA NA 0.697 NA NA NA NA
## Im7 NA NA NA 0.844 NA NA NA NA
## Im9 NA NA NA 0.342 NA NA NA NA
## Im1 NA NA NA NA 0.961 NA NA NA
## Im2 NA NA NA NA 0.808 NA NA NA
## Im10 NA NA NA NA NA 0.854 NA NA
## Im14 NA NA NA NA NA 0.906 NA NA
## Im17 NA NA NA NA NA NA 0.938 NA
## Im18 NA NA NA NA NA NA 0.734 NA
## Im16 NA NA NA NA NA NA NA 0.587
## Im19 NA NA NA NA NA NA NA 0.733
We can confirm that Im9 is also the problem here, with value under 0.4 in Individual Item Reliability.
Summary of CFA Model with 8 Factors - Removing Im9
model_CFA <-"
Shopping_Experience =~ Im20+Im22+Im21
Store_Decoration =~ Im3+Im4+Im5
Luxury_Brands =~ Im12+Im13+Im11
French_Culture =~ Im6+Im7
Product_Assortment =~ Im1+Im2
Gourmet_Food =~ Im10+Im14
Trendiness =~ Im17+Im18
Professionalism =~ Im16+Im19"
# removed: Im9
fit_CFA <- lavaan::cfa(model_CFA, data=df, missing="ML")
summary(fit_CFA,fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6.15 ended normally after 106 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 85
##
## Number of observations 553
## Number of missing patterns 79
##
## Model Test User Model:
##
## Test statistic 259.047
## Degrees of freedom 124
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 7474.765
## Degrees of freedom 171
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.982
## Tucker-Lewis Index (TLI) 0.975
##
## Robust Comparative Fit Index (CFI) 0.981
## Robust Tucker-Lewis Index (TLI) 0.974
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -12973.111
## Loglikelihood unrestricted model (H1) -12843.588
##
## Akaike (AIC) 26116.223
## Bayesian (BIC) 26483.028
## Sample-size adjusted Bayesian (SABIC) 26213.200
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.044
## 90 Percent confidence interval - lower 0.037
## 90 Percent confidence interval - upper 0.052
## P-value H_0: RMSEA <= 0.050 0.886
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.045
## 90 Percent confidence interval - lower 0.038
## 90 Percent confidence interval - upper 0.053
## P-value H_0: Robust RMSEA <= 0.050 0.825
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.029
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience =~
## Im20 1.000 1.265 0.845
## Im22 1.060 0.047 22.606 0.000 1.340 0.877
## Im21 0.849 0.041 20.824 0.000 1.074 0.783
## Store_Decoration =~
## Im3 1.000 1.236 0.937
## Im4 1.056 0.025 42.716 0.000 1.305 0.969
## Im5 0.818 0.034 23.815 0.000 1.011 0.760
## Luxury_Brands =~
## Im12 1.000 0.991 0.872
## Im13 1.039 0.050 20.658 0.000 1.030 0.855
## Im11 0.709 0.047 15.046 0.000 0.703 0.615
## French_Culture =~
## Im6 1.000 0.975 0.813
## Im7 1.184 0.071 16.770 0.000 1.155 0.955
## Product_Assortment =~
## Im1 1.000 1.305 0.980
## Im2 0.885 0.033 27.043 0.000 1.155 0.899
## Gourmet_Food =~
## Im10 1.000 0.812 0.923
## Im14 1.015 0.036 28.479 0.000 0.824 0.952
## Trendiness =~
## Im17 1.000 1.204 0.969
## Im18 0.994 0.041 24.143 0.000 1.197 0.856
## Professionalism =~
## Im16 1.000 0.921 0.766
## Im19 1.046 0.061 17.170 0.000 0.963 0.856
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience ~~
## Store_Decoratn 0.730 0.082 8.912 0.000 0.467 0.467
## Luxury_Brands 0.524 0.068 7.696 0.000 0.418 0.418
## French_Culture 0.410 0.065 6.352 0.000 0.333 0.333
## Prdct_Assrtmnt 0.739 0.085 8.728 0.000 0.448 0.448
## Gourmet_Food 0.303 0.051 5.948 0.000 0.295 0.295
## Trendiness 0.787 0.081 9.715 0.000 0.516 0.516
## Professionalsm 0.557 0.069 8.089 0.000 0.478 0.478
## Store_Decoration ~~
## Luxury_Brands 0.577 0.064 8.958 0.000 0.471 0.471
## French_Culture 0.402 0.063 6.350 0.000 0.334 0.334
## Prdct_Assrtmnt 0.711 0.079 9.032 0.000 0.441 0.441
## Gourmet_Food 0.418 0.050 8.393 0.000 0.416 0.416
## Trendiness 0.770 0.076 10.140 0.000 0.517 0.517
## Professionalsm 0.743 0.071 10.465 0.000 0.653 0.653
## Luxury_Brands ~~
## French_Culture 0.295 0.050 5.922 0.000 0.306 0.306
## Prdct_Assrtmnt 0.618 0.068 9.135 0.000 0.478 0.478
## Gourmet_Food 0.364 0.043 8.495 0.000 0.452 0.452
## Trendiness 0.676 0.065 10.425 0.000 0.566 0.566
## Professionalsm 0.483 0.055 8.825 0.000 0.529 0.529
## French_Culture ~~
## Prdct_Assrtmnt 0.286 0.060 4.735 0.000 0.225 0.225
## Gourmet_Food 0.463 0.047 9.829 0.000 0.585 0.585
## Trendiness 0.378 0.061 6.175 0.000 0.322 0.322
## Professionalsm 0.328 0.051 6.438 0.000 0.366 0.366
## Product_Assortment ~~
## Gourmet_Food 0.328 0.050 6.584 0.000 0.309 0.309
## Trendiness 0.817 0.079 10.362 0.000 0.519 0.519
## Professionalsm 0.717 0.072 9.956 0.000 0.597 0.597
## Gourmet_Food ~~
## Trendiness 0.318 0.047 6.801 0.000 0.325 0.325
## Professionalsm 0.372 0.043 8.589 0.000 0.498 0.498
## Trendiness ~~
## Professionalsm 0.667 0.066 10.040 0.000 0.601 0.601
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 4.672 0.064 73.177 0.000 4.672 3.123
## .Im22 4.279 0.065 65.401 0.000 4.279 2.799
## .Im21 5.139 0.058 87.970 0.000 5.139 3.751
## .Im3 4.995 0.056 88.560 0.000 4.995 3.786
## .Im4 4.999 0.057 86.983 0.000 4.999 3.712
## .Im5 5.035 0.057 87.844 0.000 5.035 3.787
## .Im12 5.666 0.049 116.089 0.000 5.666 4.983
## .Im13 5.448 0.052 105.615 0.000 5.448 4.524
## .Im11 5.653 0.049 115.271 0.000 5.653 4.943
## .Im6 5.827 0.051 113.784 0.000 5.827 4.858
## .Im7 5.753 0.052 110.826 0.000 5.753 4.756
## .Im1 4.790 0.057 84.202 0.000 4.790 3.597
## .Im2 4.857 0.055 88.354 0.000 4.857 3.779
## .Im10 6.100 0.037 162.789 0.000 6.100 6.937
## .Im14 6.138 0.037 165.861 0.000 6.138 7.093
## .Im17 5.025 0.053 94.519 0.000 5.025 4.041
## .Im18 4.595 0.060 76.447 0.000 4.595 3.287
## .Im16 5.135 0.052 99.147 0.000 5.135 4.269
## .Im19 5.145 0.048 106.948 0.000 5.145 4.574
## Shoppng_Exprnc 0.000 0.000 0.000
## Store_Decoratn 0.000 0.000 0.000
## Luxury_Brands 0.000 0.000 0.000
## French_Culture 0.000 0.000 0.000
## Prdct_Assrtmnt 0.000 0.000 0.000
## Gourmet_Food 0.000 0.000 0.000
## Trendiness 0.000 0.000 0.000
## Professionalsm 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 0.638 0.061 10.451 0.000 0.638 0.285
## .Im22 0.541 0.063 8.540 0.000 0.541 0.231
## .Im21 0.725 0.057 12.672 0.000 0.725 0.386
## .Im3 0.213 0.024 8.755 0.000 0.213 0.122
## .Im4 0.109 0.024 4.532 0.000 0.109 0.060
## .Im5 0.747 0.049 15.217 0.000 0.747 0.422
## .Im12 0.310 0.040 7.845 0.000 0.310 0.240
## .Im13 0.390 0.045 8.765 0.000 0.390 0.269
## .Im11 0.814 0.055 14.802 0.000 0.814 0.622
## .Im6 0.487 0.056 8.677 0.000 0.487 0.339
## .Im7 0.128 0.067 1.930 0.054 0.128 0.088
## .Im1 0.070 0.050 1.394 0.163 0.070 0.040
## .Im2 0.317 0.044 7.233 0.000 0.317 0.192
## .Im10 0.114 0.019 5.961 0.000 0.114 0.148
## .Im14 0.070 0.019 3.680 0.000 0.070 0.093
## .Im17 0.095 0.045 2.112 0.035 0.095 0.062
## .Im18 0.521 0.055 9.540 0.000 0.521 0.267
## .Im16 0.599 0.052 11.498 0.000 0.599 0.414
## .Im19 0.338 0.045 7.457 0.000 0.338 0.267
## Shoppng_Exprnc 1.599 0.138 11.623 0.000 1.000 1.000
## Store_Decoratn 1.528 0.107 14.326 0.000 1.000 1.000
## Luxury_Brands 0.983 0.084 11.678 0.000 1.000 1.000
## French_Culture 0.952 0.095 10.058 0.000 1.000 1.000
## Prdct_Assrtmnt 1.704 0.118 14.388 0.000 1.000 1.000
## Gourmet_Food 0.659 0.049 13.328 0.000 1.000 1.000
## Trendiness 1.451 0.104 13.988 0.000 1.000 1.000
## Professionalsm 0.849 0.088 9.638 0.000 1.000 1.000
Modification indices of CFA Model with 8 Factors - Removing Im9
modificationindices(fit_CFA) %>% filter(mi>10)
## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 Shopping_Experience =~ Im12 10.952 -0.115 -0.145 -0.127 -0.127
## 2 Product_Assortment =~ Im20 14.777 -0.151 -0.197 -0.132 -0.132
## 3 Product_Assortment =~ Im12 10.663 -0.111 -0.145 -0.127 -0.127
## 4 Product_Assortment =~ Im13 13.970 0.133 0.174 0.144 0.144
## 5 Gourmet_Food =~ Im11 12.742 0.215 0.174 0.152 0.152
## 6 Trendiness =~ Im12 17.245 -0.179 -0.216 -0.190 -0.190
## 7 Trendiness =~ Im13 23.832 0.220 0.265 0.220 0.220
## 8 Im20 ~~ Im21 11.455 0.228 0.228 0.335 0.335
## 9 Im22 ~~ Im21 15.139 -0.285 -0.285 -0.455 -0.455
## 10 Im12 ~~ Im11 13.307 0.145 0.145 0.288 0.288
## 11 Im13 ~~ Im11 21.323 -0.191 -0.191 -0.338 -0.338
## 12 Im13 ~~ Im1 10.707 0.068 0.068 0.409 0.409
Now most mi are between 10 or 23 mi which can considered okay compared to sample size. Im11 and Im13 give high mi (over 20) as well.
Individual item Reliability
std.loadings<- inspect(fit_CFA, what="std")$lambda
check=std.loadings
check[check>0] <- 1
std.loadings[std.loadings==0] <- NA
std.loadings2 <- std.loadings^2
std.theta<- inspect(fit_CFA, what="std")$theta
#Individual item Reliability (should be larger than 0.4)
IIR=std.loadings2/(colSums(std.theta)+std.loadings2)
IIR
## Shpp_E Str_Dc Lxry_B Frnc_C Prdc_A Grmt_F Trndns Prfssn
## Im20 0.715 NA NA NA NA NA NA NA
## Im22 0.769 NA NA NA NA NA NA NA
## Im21 0.614 NA NA NA NA NA NA NA
## Im3 NA 0.878 NA NA NA NA NA NA
## Im4 NA 0.940 NA NA NA NA NA NA
## Im5 NA 0.578 NA NA NA NA NA NA
## Im12 NA NA 0.760 NA NA NA NA NA
## Im13 NA NA 0.731 NA NA NA NA NA
## Im11 NA NA 0.378 NA NA NA NA NA
## Im6 NA NA NA 0.661 NA NA NA NA
## Im7 NA NA NA 0.912 NA NA NA NA
## Im1 NA NA NA NA 0.960 NA NA NA
## Im2 NA NA NA NA 0.808 NA NA NA
## Im10 NA NA NA NA NA 0.852 NA NA
## Im14 NA NA NA NA NA 0.907 NA NA
## Im17 NA NA NA NA NA NA 0.938 NA
## Im18 NA NA NA NA NA NA 0.733 NA
## Im16 NA NA NA NA NA NA NA 0.586
## Im19 NA NA NA NA NA NA NA 0.733
Nevertheless, Im11 is still not reliable as an individual item < 0.4. We can consider removing it.
Summary of CFA Model with 8 Factors - Removing Im9 + Im11
model_CFA <-"
Shopping_Experience =~ Im20+Im22+Im21
Store_Decoration =~ Im3+Im4+Im5
Luxury_Brands =~ Im12+Im13
French_Culture =~ Im6+Im7
Product_Assortment =~ Im1+Im2
Gourmet_Food =~ Im10+Im14
Trendiness =~ Im17+Im18
Professionalism =~ Im16+Im19"
# removed: Im9
fit_CFA <- lavaan::cfa(model_CFA, data=df, missing="ML")
summary(fit_CFA,fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6.15 ended normally after 104 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 82
##
## Number of observations 553
## Number of missing patterns 75
##
## Model Test User Model:
##
## Test statistic 203.508
## Degrees of freedom 107
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 7217.692
## Degrees of freedom 153
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.986
## Tucker-Lewis Index (TLI) 0.980
##
## Robust Comparative Fit Index (CFI) 0.986
## Robust Tucker-Lewis Index (TLI) 0.980
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -12234.854
## Loglikelihood unrestricted model (H1) -12133.100
##
## Akaike (AIC) 24633.709
## Bayesian (BIC) 24987.568
## Sample-size adjusted Bayesian (SABIC) 24727.264
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.040
## 90 Percent confidence interval - lower 0.032
## 90 Percent confidence interval - upper 0.049
## P-value H_0: RMSEA <= 0.050 0.971
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.041
## 90 Percent confidence interval - lower 0.033
## 90 Percent confidence interval - upper 0.050
## P-value H_0: Robust RMSEA <= 0.050 0.946
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.024
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience =~
## Im20 1.000 1.264 0.845
## Im22 1.061 0.047 22.572 0.000 1.341 0.877
## Im21 0.849 0.041 20.811 0.000 1.073 0.783
## Store_Decoration =~
## Im3 1.000 1.236 0.937
## Im4 1.056 0.025 42.718 0.000 1.305 0.969
## Im5 0.818 0.034 23.812 0.000 1.011 0.760
## Luxury_Brands =~
## Im12 1.000 0.925 0.814
## Im13 1.197 0.068 17.500 0.000 1.108 0.919
## French_Culture =~
## Im6 1.000 0.975 0.813
## Im7 1.185 0.070 16.849 0.000 1.155 0.955
## Product_Assortment =~
## Im1 1.000 1.309 0.983
## Im2 0.880 0.033 26.989 0.000 1.152 0.896
## Gourmet_Food =~
## Im10 1.000 0.811 0.922
## Im14 1.018 0.036 28.129 0.000 0.825 0.954
## Trendiness =~
## Im17 1.000 1.208 0.971
## Im18 0.989 0.041 24.254 0.000 1.194 0.854
## Professionalism =~
## Im16 1.000 0.921 0.766
## Im19 1.046 0.061 17.135 0.000 0.964 0.857
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience ~~
## Store_Decoratn 0.729 0.082 8.912 0.000 0.467 0.467
## Luxury_Brands 0.475 0.065 7.311 0.000 0.407 0.407
## French_Culture 0.410 0.065 6.356 0.000 0.333 0.333
## Prdct_Assrtmnt 0.741 0.085 8.745 0.000 0.448 0.448
## Gourmet_Food 0.302 0.051 5.941 0.000 0.295 0.295
## Trendiness 0.786 0.081 9.708 0.000 0.515 0.515
## Professionalsm 0.556 0.069 8.084 0.000 0.478 0.478
## Store_Decoration ~~
## Luxury_Brands 0.529 0.063 8.358 0.000 0.463 0.463
## French_Culture 0.402 0.063 6.355 0.000 0.334 0.334
## Prdct_Assrtmnt 0.711 0.079 9.035 0.000 0.440 0.440
## Gourmet_Food 0.417 0.050 8.384 0.000 0.416 0.416
## Trendiness 0.770 0.076 10.133 0.000 0.516 0.516
## Professionalsm 0.743 0.071 10.458 0.000 0.653 0.653
## Luxury_Brands ~~
## French_Culture 0.256 0.048 5.378 0.000 0.284 0.284
## Prdct_Assrtmnt 0.592 0.066 8.971 0.000 0.489 0.489
## Gourmet_Food 0.310 0.042 7.391 0.000 0.413 0.413
## Trendiness 0.646 0.064 10.050 0.000 0.579 0.579
## Professionalsm 0.441 0.054 8.215 0.000 0.517 0.517
## French_Culture ~~
## Prdct_Assrtmnt 0.286 0.061 4.723 0.000 0.224 0.224
## Gourmet_Food 0.463 0.047 9.822 0.000 0.585 0.585
## Trendiness 0.378 0.061 6.179 0.000 0.321 0.321
## Professionalsm 0.328 0.051 6.441 0.000 0.366 0.366
## Product_Assortment ~~
## Gourmet_Food 0.327 0.050 6.578 0.000 0.309 0.309
## Trendiness 0.817 0.079 10.366 0.000 0.517 0.517
## Professionalsm 0.717 0.072 9.945 0.000 0.595 0.595
## Gourmet_Food ~~
## Trendiness 0.318 0.047 6.810 0.000 0.325 0.325
## Professionalsm 0.371 0.043 8.565 0.000 0.497 0.497
## Trendiness ~~
## Professionalsm 0.668 0.066 10.050 0.000 0.600 0.600
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 4.672 0.064 73.175 0.000 4.672 3.123
## .Im22 4.279 0.065 65.401 0.000 4.279 2.799
## .Im21 5.139 0.058 87.969 0.000 5.139 3.751
## .Im3 4.995 0.056 88.561 0.000 4.995 3.786
## .Im4 4.999 0.057 86.984 0.000 4.999 3.712
## .Im5 5.035 0.057 87.844 0.000 5.035 3.787
## .Im12 5.665 0.049 116.049 0.000 5.665 4.986
## .Im13 5.448 0.052 105.546 0.000 5.448 4.521
## .Im6 5.827 0.051 113.785 0.000 5.827 4.858
## .Im7 5.753 0.052 110.824 0.000 5.753 4.756
## .Im1 4.791 0.057 84.201 0.000 4.791 3.597
## .Im2 4.857 0.055 88.354 0.000 4.857 3.779
## .Im10 6.100 0.037 162.776 0.000 6.100 6.936
## .Im14 6.138 0.037 165.836 0.000 6.138 7.092
## .Im17 5.025 0.053 94.523 0.000 5.025 4.041
## .Im18 4.595 0.060 76.454 0.000 4.595 3.287
## .Im16 5.135 0.052 99.142 0.000 5.135 4.269
## .Im19 5.145 0.048 106.947 0.000 5.145 4.574
## Shoppng_Exprnc 0.000 0.000 0.000
## Store_Decoratn 0.000 0.000 0.000
## Luxury_Brands 0.000 0.000 0.000
## French_Culture 0.000 0.000 0.000
## Prdct_Assrtmnt 0.000 0.000 0.000
## Gourmet_Food 0.000 0.000 0.000
## Trendiness 0.000 0.000 0.000
## Professionalsm 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 0.640 0.061 10.459 0.000 0.640 0.286
## .Im22 0.539 0.063 8.489 0.000 0.539 0.231
## .Im21 0.726 0.057 12.661 0.000 0.726 0.386
## .Im3 0.213 0.024 8.752 0.000 0.213 0.122
## .Im4 0.109 0.024 4.527 0.000 0.109 0.060
## .Im5 0.747 0.049 15.217 0.000 0.747 0.422
## .Im12 0.435 0.047 9.159 0.000 0.435 0.337
## .Im13 0.226 0.058 3.892 0.000 0.226 0.155
## .Im6 0.488 0.056 8.724 0.000 0.488 0.339
## .Im7 0.128 0.066 1.939 0.053 0.128 0.088
## .Im1 0.060 0.051 1.183 0.237 0.060 0.034
## .Im2 0.325 0.044 7.411 0.000 0.325 0.197
## .Im10 0.116 0.020 5.959 0.000 0.116 0.150
## .Im14 0.068 0.019 3.503 0.000 0.068 0.090
## .Im17 0.088 0.045 1.957 0.050 0.088 0.057
## .Im18 0.528 0.054 9.725 0.000 0.528 0.270
## .Im16 0.599 0.052 11.487 0.000 0.599 0.414
## .Im19 0.337 0.045 7.424 0.000 0.337 0.266
## Shoppng_Exprnc 1.597 0.138 11.609 0.000 1.000 1.000
## Store_Decoratn 1.527 0.107 14.325 0.000 1.000 1.000
## Luxury_Brands 0.856 0.084 10.186 0.000 1.000 1.000
## French_Culture 0.951 0.094 10.075 0.000 1.000 1.000
## Prdct_Assrtmnt 1.714 0.119 14.453 0.000 1.000 1.000
## Gourmet_Food 0.657 0.050 13.263 0.000 1.000 1.000
## Trendiness 1.459 0.104 14.068 0.000 1.000 1.000
## Professionalsm 0.848 0.088 9.629 0.000 1.000 1.000
Modification indices of CFA Model with 8 Factors - Removing Im9 + Im11
modificationindices(fit_CFA) %>% filter(mi>10)
## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 Product_Assortment =~ Im20 14.627 -0.149 -0.195 -0.131 -0.131
## 2 Gourmet_Food =~ Im12 11.344 0.186 0.151 0.133 0.133
## 3 Gourmet_Food =~ Im13 11.344 -0.222 -0.180 -0.150 -0.150
## 4 Im20 ~~ Im21 11.943 0.233 0.233 0.342 0.342
## 5 Im22 ~~ Im21 15.754 -0.292 -0.292 -0.466 -0.466
Now most mi values are good.
Individual item Reliability
std.loadings<- inspect(fit_CFA, what="std")$lambda
check=std.loadings
check[check>0] <- 1
std.loadings[std.loadings==0] <- NA
std.loadings2 <- std.loadings^2
std.theta<- inspect(fit_CFA, what="std")$theta
#Individual item Reliability (should be larger than 0.4)
IIR=std.loadings2/(colSums(std.theta)+std.loadings2)
IIR
## Shpp_E Str_Dc Lxry_B Frnc_C Prdc_A Grmt_F Trndns Prfssn
## Im20 0.714 NA NA NA NA NA NA NA
## Im22 0.769 NA NA NA NA NA NA NA
## Im21 0.614 NA NA NA NA NA NA NA
## Im3 NA 0.878 NA NA NA NA NA NA
## Im4 NA 0.940 NA NA NA NA NA NA
## Im5 NA 0.578 NA NA NA NA NA NA
## Im12 NA NA 0.663 NA NA NA NA NA
## Im13 NA NA 0.845 NA NA NA NA NA
## Im6 NA NA NA 0.661 NA NA NA NA
## Im7 NA NA NA 0.912 NA NA NA NA
## Im1 NA NA NA NA 0.966 NA NA NA
## Im2 NA NA NA NA 0.803 NA NA NA
## Im10 NA NA NA NA NA 0.85 NA NA
## Im14 NA NA NA NA NA 0.91 NA NA
## Im17 NA NA NA NA NA NA 0.943 NA
## Im18 NA NA NA NA NA NA 0.730 NA
## Im16 NA NA NA NA NA NA NA 0.586
## Im19 NA NA NA NA NA NA NA 0.734
Now most Items are reliable individually > 0.4.
Cronbachs alpha
We once again look at cronbachs alpha as we now have more and different data than in EFA. We hereby have to reassign the images to the factors according to the model.
Shopping_Experience <-c("Im20","Im22","Im21")
Store_Decoration <- c("Im3","Im4","Im5")
Luxury_Brands <- c("Im12","Im13")
French_Culture <- c("Im6","Im7")
Product_Assortment <- c("Im1","Im2")
Gourmet_Food <- c("Im10","Im14")
Trendiness <- c("Im17","Im18")
Professionalism <- c("Im16","Im19")
Shopping Experience
alpha.pa1 <- psych::alpha(df[Shopping_Experience])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8762486 0.8767083 0.8282882 0.7032889 7.110844 0.009025693 4.698973 1.309301
## median_r
## 0.6888947
raw_alpha is over 0.7 and average items correlation is above 0.5
Store Decoration
alpha.pa1 <- psych::alpha(df[Store_Decoration])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9156844 0.9156176 0.9000446 0.7834062 10.85081 0.006527817 5.009715 1.239067
## median_r
## 0.7402258
raw_alpha is over 0.7 and average items correlation is above 0.5
Luxury Brands
alpha.pa1 <- psych::alpha(df[Luxury_Brands])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8533477 0.8540858 0.7453314 0.7453314 5.853343 0.0124304 5.553114 1.097921
## median_r
## 0.7453314
raw_alpha is over 0.7 and average items correlation is above 0.5
French Culture
alpha.pa1 <- psych::alpha(df[French_Culture])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8788253 0.8788329 0.7838555 0.7838555 7.253067 0.01030533 5.792196 1.138545
## median_r
## 0.7838555
raw_alpha is over 0.7 and average items correlation is above 0.5
Product Assortment
alpha.pa1 <- psych::alpha(df[Product_Assortment])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9410747 0.9413295 0.889162 0.889162 16.04435 0.004999316 4.823315 1.271072
## median_r
## 0.889162
raw_alpha is over 0.7 and average items correlation is above 0.5
Gourmet Food
alpha.pa1 <- psych::alpha(df[Gourmet_Food])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9231611 0.9234534 0.8577923 0.8577923 12.06394 0.006520538 6.11706 0.8503471
## median_r
## 0.8577923
raw_alpha is over 0.7 and average items correlation is above 0.5
Trendiness
alpha.pa1 <- psych::alpha(df[Trendiness])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9058798 0.9094269 0.8338982 0.8338982 10.04081 0.007821878 4.812844 1.267096
## median_r
## 0.8338982
raw_alpha is over 0.7 and average items correlation is above 0.5
Professionalism
alpha.pa1 <- psych::alpha(df[Professionalism])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.7981553 0.7993848 0.6658127 0.6658127 3.984668 0.01708793 5.141818 1.062645
## median_r
## 0.6658127
raw_alpha is over 0.7 and average items correlation is above 0.5
Using the same evaluation methods as before we see that every factor seems to be consistent and relevant.
Correlation matrix
Here we look at the correlation matrix of the constructs
std_fit = inspect(fit_CFA, 'std')
std_fit$psi
## Shpp_E Str_Dc Lxry_B Frnc_C Prdc_A Grmt_F Trndns Prfssn
## Shopping_Experience 1.000
## Store_Decoration 0.467 1.000
## Luxury_Brands 0.407 0.463 1.000
## French_Culture 0.333 0.334 0.284 1.000
## Product_Assortment 0.448 0.440 0.489 0.224 1.000
## Gourmet_Food 0.295 0.416 0.413 0.585 0.309 1.000
## Trendiness 0.515 0.516 0.579 0.321 0.517 0.325 1.000
## Professionalism 0.478 0.653 0.517 0.366 0.595 0.497 0.600 1.000
We see that the biggest correlation is 0.653 Thereby there are no really big correlations. Professionalism is slightly correlated with Store Decoration.
Composite Construct Reliability
#Composite/Construct Reliability (should be higher than 0.6)
sum.std.loadings<-colSums(std.loadings, na.rm=TRUE)^2
sum.std.theta<-rowSums(std.theta)
sum.std.theta=check*sum.std.theta
CR=sum.std.loadings/(sum.std.loadings+colSums(sum.std.theta))
CR
## Shopping_Experience Store_Decoration Luxury_Brands French_Culture
## 0.8742198 0.9215858 0.8592308 0.8799552
## Product_Assortment Gourmet_Food Trendiness Professionalism
## 0.9387176 0.9359996 0.9105834 0.7946199
Again this output is satisfying as every composite construct reliability is above 0.6.
Average Variance Extracted
#Average Variance Extracted (should be higher than 0.5)
std.loadings<- inspect(fit_CFA, what="std")$lambda
std.loadings <- std.loadings^2
AVE=colSums(std.loadings)/(colSums(sum.std.theta)+colSums(std.loadings))
AVE
## Shopping_Experience Store_Decoration Luxury_Brands French_Culture
## 0.6989612 0.7983684 0.7538798 0.7867246
## Product_Assortment Gourmet_Food Trendiness Professionalism
## 0.8847298 0.8797293 0.8364077 0.6599324
Also finally this output is also good as all the average variance extracted for each factor is above 0.5
CFA Visualization
Model without Covariances
Answer1 <- lavaanPlot(model = fit_CFA, node_options = list(shape = "box", fontname = "Helvetica"), edge_options = list(color = "palegreen4"), coefs = TRUE, sig = 0.05, covs = FALSE, digits = 2)
Model with Covariances
lavaanPlot(model = fit_CFA, node_options = list(shape = "box", fontname = "Helvetica"), edge_options = list(color = "palegreen4"), coefs = TRUE,sig = 0.05, covs = TRUE, digits = 2)
Structure Equation Modelling
Summary of SEM Model with 8 Factors - Im8, Im9, Im11 and Im15 not included
model_SEM1 <- "
# LATENT VARIABLES
## FACTORS CONSTRUCT
Shopping_Experience =~ Im20+Im21+Im22
Store_Decoration =~ Im3+Im4+Im5
Luxury_Brands =~ Im12+Im13
French_Culture =~ Im6+Im7
Product_Assortment =~ Im1+Im2
Gourmet_Food =~ Im10+Im14
Trendiness =~ Im17+Im18
Professionalism =~ Im16+Im19
## MEDIATORS CONSTRUCT
Consumer_Satisfaction =~ SAT_1 + SAT_2 + SAT_3
Affective_Commitment =~ COM_A1 + COM_A2 + COM_A3 + COM_A4
## OUTCOMES CONSTRUCT
Repurchase_Intention =~ C_REP1 + C_REP2 + C_REP3
Cocreation_Intention =~ C_CR1 + C_CR3 + C_CR4
# REGRESSION
## DIRECT EFFECT
### CONSTRUCTS -> OUTCOMES
Repurchase_Intention ~ c11*Shopping_Experience + c12*Store_Decoration + c13*Luxury_Brands + c14*French_Culture + c15*Product_Assortment +c16*Gourmet_Food + c17*Trendiness + c18*Professionalism
Cocreation_Intention ~ c21*Shopping_Experience + c22*Store_Decoration + c23*Luxury_Brands + c24*French_Culture + c25*Product_Assortment +c26*Gourmet_Food + c27*Trendiness + c28*Professionalism
## MEDIATOR
### CONSTRUCTS -> MEDIATORS
Consumer_Satisfaction ~ a11*Shopping_Experience + a12*Store_Decoration + a13*Luxury_Brands + a14*French_Culture + a15*Product_Assortment +a16*Gourmet_Food + a17*Trendiness + a18*Professionalism
Affective_Commitment ~ a21*Shopping_Experience + a22*Store_Decoration + a23*Luxury_Brands + a24*French_Culture + a25*Product_Assortment +a26*Gourmet_Food + a27*Trendiness + a28*Professionalism
### MEDIATORS ON OUTCOMES
Repurchase_Intention ~ b11*Consumer_Satisfaction
Repurchase_Intention ~ b12*Affective_Commitment
Cocreation_Intention ~ b21*Consumer_Satisfaction
Cocreation_Intention ~ b22*Affective_Commitment
## INDIRECT EFFECT
### REPURCHASE INTENTION
a11_b11 := a11*b11
a21_b12 := a21*b12
a12_b11 := a12*b11
a22_b12 := a22*b12
a13_b11 := a13*b11
a23_b12 := a23*b12
a14_b11 := a14*b11
a24_b12 := a24*b12
a15_b11 := a15*b11
a25_b12 := a25*b12
a16_b11 := a16*b11
a26_b12 := a26*b12
a17_b11 := a17*b11
a27_b12 := a27*b12
a18_b11 := a18*b11
a28_b12 := a28*b12
### COCREATION INTENTION
a11_b21 := a11*b21
a21_b22 := a21*b22
a12_b21 := a12*b21
a22_b22 := a22*b22
a13_b21 := a13*b21
a23_b22 := a23*b22
a14_b21 := a14*b21
a24_b22 := a24*b22
a15_b21 := a15*b21
a25_b22 := a25*b22
a16_b21 := a16*b21
a26_b22 := a26*b22
a17_b21 := a17*b21
a27_b22 := a27*b22
a18_b21 := a18*b21
a28_b22 := a28*b22
## TOTAL EFFECT
### REPURCHASE INTENTION
RI_Total_Shopping_Experience := c11 + (a11*b11) + (a21*b12)
RI_Total_Store_Decoration := c12 + (a12*b11) + (a22*b12)
RI_Total_Luxury_Brands := c13 + (a13*b11) + (a23*b12)
RI_Total_French_Culture := c14 + (a14*b11) + (a24*b12)
RI_Total_Product_Assortment := c15 + (a15*b11) + (a25*b12)
RI_Total_Gourmet_Food := c16 + (a16*b11) + (a26*b12)
RI_Total_Trendiness := c17 + (a17*b11) + (a27*b12)
RI_Total_Professionalism := c18 + (a18*b11) + (a28*b12)
### COCREATION INTENTION
CI_Total_Shopping_Experience := c21 + (a11*b21) + (a21*b22)
CI_Total_Store_Decoration := c22 + (a12*b21) + (a22*b22)
CI_Total_Luxury_Brands := c23 + (a13*b21) + (a23*b22)
CI_Total_French_Culture := c24 + (a14*b21) + (a24*b22)
CI_Total_Product_Assortment := c25 + (a15*b21) + (a25*b22)
CI_Total_Gourmet_Food := c26 + (a16*b21) + (a26*b22)
CI_Total_Trendiness := c27 + (a17*b21) + (a27*b22)
CI_Total_Professionalism := c28 + (a18*b21) + (a28*b22)
"
fit_SEM <- lavaan::sem(model_SEM1, data=df, missing="ML")
summary(fit_SEM,fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6.15 ended normally after 146 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 158
##
## Number of observations 553
## Number of missing patterns 131
##
## Model Test User Model:
##
## Test statistic 630.851
## Degrees of freedom 369
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 11708.556
## Degrees of freedom 465
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.977
## Tucker-Lewis Index (TLI) 0.971
##
## Robust Comparative Fit Index (CFI) 0.977
## Robust Tucker-Lewis Index (TLI) 0.971
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -21630.076
## Loglikelihood unrestricted model (H1) -21314.650
##
## Akaike (AIC) 43576.151
## Bayesian (BIC) 44257.978
## Sample-size adjusted Bayesian (SABIC) 43756.416
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.036
## 90 Percent confidence interval - lower 0.031
## 90 Percent confidence interval - upper 0.041
## P-value H_0: RMSEA <= 0.050 1.000
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.036
## 90 Percent confidence interval - lower 0.031
## 90 Percent confidence interval - upper 0.041
## P-value H_0: Robust RMSEA <= 0.050 1.000
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.039
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv
## Shopping_Experience =~
## Im20 1.000 1.261
## Im21 0.858 0.041 20.995 0.000 1.082
## Im22 1.057 0.046 23.012 0.000 1.333
## Store_Decoration =~
## Im3 1.000 1.235
## Im4 1.057 0.025 42.733 0.000 1.306
## Im5 0.818 0.034 23.804 0.000 1.010
## Luxury_Brands =~
## Im12 1.000 0.926
## Im13 1.192 0.068 17.623 0.000 1.104
## French_Culture =~
## Im6 1.000 0.987
## Im7 1.158 0.065 17.865 0.000 1.143
## Product_Assortment =~
## Im1 1.000 1.300
## Im2 0.891 0.031 28.303 0.000 1.159
## Gourmet_Food =~
## Im10 1.000 0.808
## Im14 1.024 0.036 28.296 0.000 0.828
## Trendiness =~
## Im17 1.000 1.209
## Im18 0.986 0.041 24.214 0.000 1.192
## Professionalism =~
## Im16 1.000 0.919
## Im19 1.044 0.059 17.831 0.000 0.959
## Consumer_Satisfaction =~
## SAT_1 1.000 0.882
## SAT_2 0.933 0.049 18.905 0.000 0.823
## SAT_3 0.809 0.055 14.801 0.000 0.714
## Affective_Commitment =~
## COM_A1 1.000 1.144
## COM_A2 1.174 0.055 21.503 0.000 1.343
## COM_A3 1.163 0.058 20.031 0.000 1.329
## COM_A4 1.278 0.061 20.796 0.000 1.461
## Repurchase_Intention =~
## C_REP1 1.000 0.596
## C_REP2 0.972 0.043 22.488 0.000 0.579
## C_REP3 0.702 0.037 19.042 0.000 0.419
## Cocreation_Intention =~
## C_CR1 1.000 1.659
## C_CR3 1.032 0.051 20.233 0.000 1.712
## C_CR4 0.962 0.049 19.761 0.000 1.597
## Std.all
##
## 0.843
## 0.789
## 0.873
##
## 0.936
## 0.970
## 0.760
##
## 0.816
## 0.917
##
## 0.823
## 0.944
##
## 0.977
## 0.902
##
## 0.919
## 0.957
##
## 0.972
## 0.853
##
## 0.764
## 0.853
##
## 0.865
## 0.819
## 0.624
##
## 0.796
## 0.836
## 0.817
## 0.842
##
## 0.815
## 0.932
## 0.756
##
## 0.851
## 0.826
## 0.805
##
## Regressions:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Repurchase_Intention ~
## Shppng_E (c11) 0.040 0.028 1.440 0.150 0.086 0.086
## Str_Dcrt (c12) 0.009 0.029 0.311 0.756 0.019 0.019
## Lxry_Brn (c13) 0.063 0.038 1.664 0.096 0.098 0.098
## Frnch_Cl (c14) -0.034 0.033 -1.017 0.309 -0.056 -0.056
## Prdct_As (c15) -0.019 0.026 -0.721 0.471 -0.040 -0.040
## Gormt_Fd (c16) 0.040 0.043 0.930 0.353 0.054 0.054
## Trendnss (c17) -0.014 0.030 -0.456 0.648 -0.027 -0.027
## Prfssnls (c18) -0.035 0.060 -0.586 0.558 -0.054 -0.054
## Cocreation_Intention ~
## Shppng_E (c21) 0.157 0.087 1.803 0.071 0.120 0.120
## Str_Dcrt (c22) -0.028 0.090 -0.310 0.757 -0.021 -0.021
## Lxry_Brn (c23) 0.097 0.119 0.812 0.417 0.054 0.054
## Frnch_Cl (c24) -0.129 0.104 -1.235 0.217 -0.076 -0.076
## Prdct_As (c25) -0.004 0.080 -0.045 0.964 -0.003 -0.003
## Gormt_Fd (c26) -0.061 0.133 -0.456 0.649 -0.030 -0.030
## Trendnss (c27) 0.031 0.092 0.338 0.735 0.023 0.023
## Prfssnls (c28) -0.169 0.184 -0.921 0.357 -0.094 -0.094
## Consumer_Satisfaction ~
## Shppng_E (a11) 0.051 0.038 1.359 0.174 0.074 0.074
## Str_Dcrt (a12) -0.109 0.043 -2.535 0.011 -0.153 -0.153
## Lxry_Brn (a13) -0.022 0.056 -0.393 0.694 -0.023 -0.023
## Frnch_Cl (a14) 0.103 0.049 2.100 0.036 0.115 0.115
## Prdct_As (a15) 0.133 0.040 3.360 0.001 0.196 0.196
## Gormt_Fd (a16) 0.078 0.064 1.214 0.225 0.072 0.072
## Trendnss (a17) 0.007 0.045 0.156 0.876 0.010 0.010
## Prfssnls (a18) 0.459 0.087 5.255 0.000 0.478 0.478
## Affective_Commitment ~
## Shppng_E (a21) 0.372 0.052 7.206 0.000 0.410 0.410
## Str_Dcrt (a22) -0.022 0.054 -0.403 0.687 -0.024 -0.024
## Lxry_Brn (a23) -0.167 0.073 -2.305 0.021 -0.135 -0.135
## Frnch_Cl (a24) 0.221 0.064 3.471 0.001 0.191 0.191
## Prdct_As (a25) 0.105 0.050 2.105 0.035 0.119 0.119
## Gormt_Fd (a26) 0.027 0.083 0.324 0.746 0.019 0.019
## Trendnss (a27) -0.007 0.058 -0.115 0.909 -0.007 -0.007
## Prfssnls (a28) 0.159 0.105 1.519 0.129 0.128 0.128
## Repurchase_Intention ~
## Cnsmr_St (b11) 0.213 0.045 4.758 0.000 0.316 0.316
## Affctv_C (b12) 0.186 0.030 6.175 0.000 0.356 0.356
## Cocreation_Intention ~
## Cnsmr_St (b21) -0.359 0.131 -2.727 0.006 -0.191 -0.191
## Affctv_C (b22) 0.544 0.091 5.971 0.000 0.375 0.375
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience ~~
## Store_Decoratn 0.728 0.082 8.916 0.000 0.467 0.467
## Luxury_Brands 0.475 0.065 7.329 0.000 0.407 0.407
## French_Culture 0.415 0.065 6.399 0.000 0.333 0.333
## Prdct_Assrtmnt 0.734 0.084 8.693 0.000 0.447 0.447
## Gourmet_Food 0.300 0.051 5.940 0.000 0.295 0.295
## Trendiness 0.784 0.081 9.702 0.000 0.514 0.514
## Professionalsm 0.552 0.068 8.103 0.000 0.476 0.476
## Store_Decoration ~~
## Luxury_Brands 0.529 0.063 8.379 0.000 0.463 0.463
## French_Culture 0.413 0.063 6.538 0.000 0.339 0.339
## Prdct_Assrtmnt 0.709 0.079 9.023 0.000 0.441 0.441
## Gourmet_Food 0.416 0.050 8.375 0.000 0.416 0.416
## Trendiness 0.769 0.076 10.121 0.000 0.515 0.515
## Professionalsm 0.744 0.071 10.545 0.000 0.655 0.655
## Luxury_Brands ~~
## French_Culture 0.260 0.048 5.405 0.000 0.284 0.284
## Prdct_Assrtmnt 0.588 0.066 8.936 0.000 0.488 0.488
## Gourmet_Food 0.310 0.042 7.419 0.000 0.414 0.414
## Trendiness 0.647 0.064 10.080 0.000 0.578 0.578
## Professionalsm 0.442 0.053 8.263 0.000 0.520 0.520
## French_Culture ~~
## Prdct_Assrtmnt 0.292 0.061 4.779 0.000 0.227 0.227
## Gourmet_Food 0.468 0.047 10.022 0.000 0.587 0.587
## Trendiness 0.389 0.061 6.351 0.000 0.326 0.326
## Professionalsm 0.335 0.051 6.573 0.000 0.370 0.370
## Product_Assortment ~~
## Gourmet_Food 0.327 0.050 6.606 0.000 0.311 0.311
## Trendiness 0.815 0.079 10.364 0.000 0.519 0.519
## Professionalsm 0.717 0.071 10.044 0.000 0.600 0.600
## Gourmet_Food ~~
## Trendiness 0.317 0.047 6.804 0.000 0.325 0.325
## Professionalsm 0.370 0.043 8.600 0.000 0.499 0.499
## Trendiness ~~
## Professionalsm 0.668 0.066 10.117 0.000 0.601 0.601
## .Repurchase_Intention ~~
## .Cocretn_Intntn -0.014 0.038 -0.357 0.721 -0.019 -0.019
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 4.672 0.064 73.217 0.000 4.672 3.125
## .Im21 5.139 0.058 87.977 0.000 5.139 3.750
## .Im22 4.280 0.065 65.481 0.000 4.280 2.802
## .Im3 4.995 0.056 88.568 0.000 4.995 3.786
## .Im4 4.998 0.057 86.998 0.000 4.998 3.713
## .Im5 5.035 0.057 87.850 0.000 5.035 3.787
## .Im12 5.664 0.049 116.108 0.000 5.664 4.989
## .Im13 5.447 0.052 105.620 0.000 5.447 4.524
## .Im6 5.828 0.051 113.798 0.000 5.828 4.858
## .Im7 5.754 0.052 110.816 0.000 5.754 4.756
## .Im1 4.792 0.057 84.290 0.000 4.792 3.600
## .Im2 4.858 0.055 88.416 0.000 4.858 3.781
## .Im10 6.100 0.037 162.768 0.000 6.100 6.936
## .Im14 6.138 0.037 165.827 0.000 6.138 7.091
## .Im17 5.025 0.053 94.560 0.000 5.025 4.042
## .Im18 4.595 0.060 76.468 0.000 4.595 3.288
## .Im16 5.135 0.052 99.188 0.000 5.135 4.269
## .Im19 5.145 0.048 107.020 0.000 5.145 4.576
## .SAT_1 5.343 0.043 122.952 0.000 5.343 5.239
## .SAT_2 5.482 0.043 127.742 0.000 5.482 5.455
## .SAT_3 5.458 0.050 109.429 0.000 5.458 4.773
## .COM_A1 4.287 0.061 69.745 0.000 4.287 2.983
## .COM_A2 3.887 0.069 56.667 0.000 3.887 2.420
## .COM_A3 3.543 0.070 50.858 0.000 3.543 2.178
## .COM_A4 3.456 0.074 46.672 0.000 3.456 1.991
## .C_REP1 4.283 0.031 137.515 0.000 4.283 5.859
## .C_REP2 4.507 0.027 169.658 0.000 4.507 7.250
## .C_REP3 4.677 0.024 196.945 0.000 4.677 8.446
## .C_CR1 2.679 0.084 32.074 0.000 2.679 1.375
## .C_CR3 3.261 0.088 36.881 0.000 3.261 1.572
## .C_CR4 2.786 0.085 32.900 0.000 2.786 1.405
## Shoppng_Exprnc 0.000 0.000 0.000
## Store_Decoratn 0.000 0.000 0.000
## Luxury_Brands 0.000 0.000 0.000
## French_Culture 0.000 0.000 0.000
## Prdct_Assrtmnt 0.000 0.000 0.000
## Gourmet_Food 0.000 0.000 0.000
## Trendiness 0.000 0.000 0.000
## Professionalsm 0.000 0.000 0.000
## .Consmr_Stsfctn 0.000 0.000 0.000
## .Affctv_Cmmtmnt 0.000 0.000 0.000
## .Reprchs_Intntn 0.000 0.000 0.000
## .Cocretn_Intntn 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 0.645 0.060 10.840 0.000 0.645 0.289
## .Im21 0.708 0.056 12.622 0.000 0.708 0.377
## .Im22 0.557 0.061 9.061 0.000 0.557 0.239
## .Im3 0.214 0.024 8.790 0.000 0.214 0.123
## .Im4 0.108 0.024 4.486 0.000 0.108 0.060
## .Im5 0.747 0.049 15.220 0.000 0.747 0.423
## .Im12 0.431 0.047 9.151 0.000 0.431 0.335
## .Im13 0.231 0.057 4.022 0.000 0.231 0.159
## .Im6 0.465 0.053 8.804 0.000 0.465 0.323
## .Im7 0.159 0.060 2.627 0.009 0.159 0.108
## .Im1 0.081 0.047 1.743 0.081 0.081 0.046
## .Im2 0.309 0.041 7.470 0.000 0.309 0.187
## .Im10 0.120 0.019 6.215 0.000 0.120 0.155
## .Im14 0.064 0.019 3.321 0.001 0.064 0.085
## .Im17 0.084 0.045 1.877 0.061 0.084 0.055
## .Im18 0.532 0.054 9.762 0.000 0.532 0.272
## .Im16 0.602 0.050 11.929 0.000 0.602 0.416
## .Im19 0.344 0.044 7.896 0.000 0.344 0.272
## .SAT_1 0.262 0.034 7.728 0.000 0.262 0.252
## .SAT_2 0.333 0.033 9.966 0.000 0.333 0.329
## .SAT_3 0.798 0.056 14.347 0.000 0.798 0.610
## .COM_A1 0.757 0.058 12.962 0.000 0.757 0.367
## .COM_A2 0.778 0.065 11.905 0.000 0.778 0.301
## .COM_A3 0.879 0.070 12.492 0.000 0.879 0.332
## .COM_A4 0.877 0.075 11.732 0.000 0.877 0.291
## .C_REP1 0.179 0.016 11.312 0.000 0.179 0.335
## .C_REP2 0.051 0.010 4.927 0.000 0.051 0.132
## .C_REP3 0.131 0.009 14.065 0.000 0.131 0.428
## .C_CR1 1.044 0.113 9.270 0.000 1.044 0.275
## .C_CR3 1.369 0.130 10.566 0.000 1.369 0.318
## .C_CR4 1.381 0.122 11.322 0.000 1.381 0.351
## Shoppng_Exprnc 1.591 0.136 11.654 0.000 1.000 1.000
## Store_Decoratn 1.526 0.107 14.319 0.000 1.000 1.000
## Luxury_Brands 0.857 0.084 10.240 0.000 1.000 1.000
## French_Culture 0.974 0.094 10.411 0.000 1.000 1.000
## Prdct_Assrtmnt 1.691 0.117 14.490 0.000 1.000 1.000
## Gourmet_Food 0.654 0.049 13.224 0.000 1.000 1.000
## Trendiness 1.461 0.104 14.094 0.000 1.000 1.000
## Professionalsm 0.844 0.087 9.719 0.000 1.000 1.000
## .Consmr_Stsfctn 0.449 0.047 9.468 0.000 0.577 0.577
## .Affctv_Cmmtmnt 0.859 0.086 10.034 0.000 0.657 0.657
## .Reprchs_Intntn 0.237 0.022 10.938 0.000 0.667 0.667
## .Cocretn_Intntn 2.288 0.209 10.970 0.000 0.832 0.832
##
## Defined Parameters:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## a11_b11 0.011 0.008 1.315 0.188 0.023 0.023
## a21_b12 0.069 0.014 4.808 0.000 0.146 0.146
## a12_b11 -0.023 0.010 -2.226 0.026 -0.048 -0.048
## a22_b12 -0.004 0.010 -0.402 0.688 -0.008 -0.008
## a13_b11 -0.005 0.012 -0.391 0.695 -0.007 -0.007
## a23_b12 -0.031 0.014 -2.157 0.031 -0.048 -0.048
## a14_b11 0.022 0.011 1.933 0.053 0.036 0.036
## a24_b12 0.041 0.014 3.038 0.002 0.068 0.068
## a15_b11 0.028 0.010 2.823 0.005 0.062 0.062
## a25_b12 0.020 0.010 1.998 0.046 0.043 0.043
## a16_b11 0.017 0.014 1.180 0.238 0.023 0.023
## a26_b12 0.005 0.015 0.324 0.746 0.007 0.007
## a17_b11 0.001 0.010 0.156 0.876 0.003 0.003
## a27_b12 -0.001 0.011 -0.115 0.909 -0.002 -0.002
## a18_b11 0.098 0.028 3.477 0.001 0.151 0.151
## a28_b12 0.030 0.020 1.476 0.140 0.046 0.046
## a11_b21 -0.018 0.015 -1.206 0.228 -0.014 -0.014
## a21_b22 0.202 0.043 4.738 0.000 0.154 0.154
## a12_b21 0.039 0.021 1.866 0.062 0.029 0.029
## a22_b22 -0.012 0.030 -0.402 0.688 -0.009 -0.009
## a13_b21 0.008 0.020 0.389 0.697 0.004 0.004
## a23_b22 -0.091 0.042 -2.152 0.031 -0.051 -0.051
## a14_b21 -0.037 0.022 -1.676 0.094 -0.022 -0.022
## a24_b22 0.120 0.040 3.012 0.003 0.072 0.072
## a15_b21 -0.048 0.023 -2.111 0.035 -0.037 -0.037
## a25_b22 0.057 0.029 2.001 0.045 0.045 0.045
## a16_b21 -0.028 0.025 -1.104 0.270 -0.014 -0.014
## a26_b22 0.015 0.045 0.324 0.746 0.007 0.007
## a17_b21 -0.003 0.016 -0.156 0.876 -0.002 -0.002
## a27_b22 -0.004 0.031 -0.115 0.909 -0.003 -0.003
## a18_b21 -0.165 0.067 -2.451 0.014 -0.091 -0.091
## a28_b22 0.087 0.059 1.464 0.143 0.048 0.048
## RI_Ttl_Shppn_E 0.120 0.028 4.276 0.000 0.255 0.255
## RI_Ttl_Str_Dcr -0.018 0.030 -0.600 0.548 -0.038 -0.038
## RI_Ttl_Lxry_Br 0.027 0.041 0.674 0.500 0.042 0.042
## RI_Ttl_Frnch_C 0.029 0.035 0.832 0.406 0.048 0.048
## RI_Ttl_Prdct_A 0.029 0.028 1.067 0.286 0.064 0.064
## RI_Ttl_Grmt_Fd 0.062 0.046 1.328 0.184 0.083 0.083
## RI_Ttl_Trndnss -0.013 0.032 -0.413 0.680 -0.027 -0.027
## RI_Ttl_Prfssnl 0.092 0.058 1.582 0.114 0.142 0.142
## CI_Ttl_Shppn_E 0.341 0.084 4.075 0.000 0.259 0.259
## CI_Ttl_Str_Dcr -0.001 0.092 -0.009 0.993 -0.001 -0.001
## CI_Ttl_Lxry_Br 0.014 0.123 0.110 0.912 0.008 0.008
## CI_Ttl_Frnch_C -0.045 0.106 -0.424 0.671 -0.027 -0.027
## CI_Ttl_Prdct_A 0.006 0.083 0.070 0.944 0.005 0.005
## CI_Ttl_Grmt_Fd -0.074 0.139 -0.532 0.595 -0.036 -0.036
## CI_Ttl_Trndnss 0.025 0.097 0.260 0.795 0.018 0.018
## CI_Ttl_Prfssnl -0.247 0.172 -1.438 0.151 -0.137 -0.137
Model Criterions
RMSEA: 0.036
Akaike (AIC): 43576.151
Bayesian (BIC): 44257.978
Comparative Fit Index (CFI): 0.977
Tucker-Lewis Index (TLI): 0.971
Overall, we have a very good fitting of the SEM model.
Significant Coefficients at 10% alpha level
parameterestimates(fit_SEM, standardized = TRUE) %>% select(lhs, rhs, est, pvalue,ci.lower, ci.upper) %>% filter(pvalue < 0.1) %>% filter(row_number() > 135)
## lhs rhs est pvalue ci.lower
## 1 a21_b12 a21*b12 0.069 0.000 0.041
## 2 a12_b11 a12*b11 -0.023 0.026 -0.044
## 3 a23_b12 a23*b12 -0.031 0.031 -0.059
## 4 a14_b11 a14*b11 0.022 0.053 0.000
## 5 a24_b12 a24*b12 0.041 0.002 0.015
## 6 a15_b11 a15*b11 0.028 0.005 0.009
## 7 a25_b12 a25*b12 0.020 0.046 0.000
## 8 a18_b11 a18*b11 0.098 0.001 0.043
## 9 a21_b22 a21*b22 0.202 0.000 0.119
## 10 a12_b21 a12*b21 0.039 0.062 -0.002
## 11 a23_b22 a23*b22 -0.091 0.031 -0.174
## 12 a14_b21 a14*b21 -0.037 0.094 -0.080
## 13 a24_b22 a24*b22 0.120 0.003 0.042
## 14 a15_b21 a15*b21 -0.048 0.035 -0.092
## 15 a25_b22 a25*b22 0.057 0.045 0.001
## 16 a18_b21 a18*b21 -0.165 0.014 -0.296
## 17 RI_Total_Shopping_Experience c11+(a11*b11)+(a21*b12) 0.120 0.000 0.065
## 18 CI_Total_Shopping_Experience c21+(a11*b21)+(a21*b22) 0.341 0.000 0.177
## ci.upper
## 1 0.097
## 2 -0.003
## 3 -0.003
## 4 0.044
## 5 0.068
## 6 0.048
## 7 0.039
## 8 0.153
## 9 0.286
## 10 0.080
## 11 -0.008
## 12 0.006
## 13 0.199
## 14 -0.003
## 15 0.113
## 16 -0.033
## 17 0.176
## 18 0.505
Significant Coefficients at 5% alpha level
We will only account those coefficient and variables for this model.
parameterestimates(fit_SEM, standardized = TRUE) %>% select(lhs, rhs, est, pvalue,ci.lower, ci.upper) %>% filter(pvalue < 0.05) %>% filter(row_number() > 131)
## lhs rhs est pvalue ci.lower
## 1 a21_b12 a21*b12 0.069 0.000 0.041
## 2 a12_b11 a12*b11 -0.023 0.026 -0.044
## 3 a23_b12 a23*b12 -0.031 0.031 -0.059
## 4 a24_b12 a24*b12 0.041 0.002 0.015
## 5 a15_b11 a15*b11 0.028 0.005 0.009
## 6 a25_b12 a25*b12 0.020 0.046 0.000
## 7 a18_b11 a18*b11 0.098 0.001 0.043
## 8 a21_b22 a21*b22 0.202 0.000 0.119
## 9 a23_b22 a23*b22 -0.091 0.031 -0.174
## 10 a24_b22 a24*b22 0.120 0.003 0.042
## 11 a15_b21 a15*b21 -0.048 0.035 -0.092
## 12 a25_b22 a25*b22 0.057 0.045 0.001
## 13 a18_b21 a18*b21 -0.165 0.014 -0.296
## 14 RI_Total_Shopping_Experience c11+(a11*b11)+(a21*b12) 0.120 0.000 0.065
## 15 CI_Total_Shopping_Experience c21+(a11*b21)+(a21*b22) 0.341 0.000 0.177
## ci.upper
## 1 0.097
## 2 -0.003
## 3 -0.003
## 4 0.068
## 5 0.048
## 6 0.039
## 7 0.153
## 8 0.286
## 9 -0.008
## 10 0.199
## 11 -0.003
## 12 0.113
## 13 -0.033
## 14 0.176
## 15 0.505
Coefficient Interpretation
Indirect Effect
a21_b12: Shopping_Experience -> Affective_Commitment -> Repurchase_Intention (Positive)
a21_b22: Shopping_Experience -> Affective_Commitment -> Cocreation_Intention (Positive)
a12_b11: Store_Decoration -> Consumer_Satisfaction -> Repurchase_Intention (Negative)
a24_b12: French_Culture -> Affective_Commitment -> Repurchase_Intention (Positive)
a24_b22: French_Culture -> Affective_Commitment -> Cocreation_Intention (Positive)
a15_b11: Product_Assortment -> Consumer_Satisfaction -> Repurchase_Intention (Positive)
a25_b12: Product_Assortment -> Affective_Commitment -> Repurchase_Intention (Positive)
a18_b11: Professionalism -> Consumer_Satisfaction -> Repurchase_Intention (Positive)
a18_b21: Professionalism -> Consumer_Satisfaction -> Cocreation_Intention (Negative)
a23_b22: Luxury_Brands -> Affective_Commitment -> Cocreation_Intention (Negative)
a23_b12: Luxury_Brands -> Affective_Commitment -> Repurchase_Intention (Negative)
a15_b21: Product_Assortment -> Consumer_Satisfaction -> Cocreation_Intention (Negative)
a25_b22: Product_Assortment -> Affective_Commitment -> Cocreation_Intention (Positive)
Mediations Statistics
We have 8 mediation effects from Affective Commitment and 5 from the Consumer Satisfaction.
There is 4 mediations from Affective Commitment to Repurchase Intention and *4 mediations from Affective Commitment to Cocreation Intention.
There is 3 mediations from Consumer Satisfaction to Repurchase Intention and 2 mediations from Consumer Satisfaction to Cocreation
Total Effect
RI_Total_Shopping_Experience (Positive) = 0.120
CI_Total_Shopping_Experience (Positive) = 0.341
SEM Visualization
Model without Covariances
lavaanPlot(model = fit_SEM, node_options = list(shape = "box", fontname = "Helvetica"), edge_options = list(color = "steelblue4"), coefs = TRUE, sig = 0.05, covs = FALSE, digits = 2)
Model with Covariances
lavaanPlot(model = fit_SEM, node_options = list(shape = "box", fontname = "Helvetica"), edge_options = list(color = "steelblue4"), coefs = TRUE,sig = 0.05, covs = TRUE, digits = 2)
Questions
1. What are the dimensions by which Galeries Lafayette is perceived? Please explain your findings and rational for your final result.
Here we show the dimensions by which Galeries Layfayette is perceived according to CFA and SEM.
Answer1
Dimensions Definitions:
Product Assortment: This group pertains to the variety and range of products offered by the store.
Store Decoration: This group pertains to the aesthetic elements of the store’s interior and exterior, such as the artistic and creative decoration of the sales area, and the appealing arrangement of shop windows.
French Culture: This group pertains to elements of French culture, such as French savoir-vivre, fashion.
Gourmet Food: This group pertains to high-quality offered by the store.
Luxury Brands: This group pertains to the presence of luxury and designer brands in the store.
Professionalism: This group pertains to elements of professionalism, such as the store’s professional appearance towards customers and professional organization.
Trendiness: This group pertains to the store’s ability to stay current and up-to-date with the latest trends in the market.
Shopping Experience: This group pertains to the overall shopping experience, including elements such as relaxing shopping, a great place to stroll, and an intimate shop atmosphere.
Exclusion of some Images:
We excluded Images 8, 9, 11 and 15 from EFA and CFA processes. We can check their actually meaning to see if there is any logical reasons of those processes to have behave that way.
Im8 What do GLB represent from your point of view? Expertise in French Traditional Cuisine
Previously loaded into French Culture or Gourmet Food. We can see that both Factor are actually leading to the same concept, French Culture is associated with Gourmet Food since the 17th century:
“During the 17th and 18th century, there was an advancement in Haute Cuisine or simply”High Cuisine”, and its origins can be discovered in the recipes of a gourmet specialist named La Varenne. He was the writer of what is referred to today as the first “true French cookbook”.”
A Brief History of French Cuisine
Im9 What do GLB represent from your point of view? French Fashion
Previously loaded into French Culture. As we can see, French Fashion is obviously associated with Haute Couture at the international level since the mid-19th century. We don’t have Fashion Construct (Factor) in our Images, therefore Im9 was very low in loadings, but also showed instability in item from Cronbach’alpha.
Im11 What do GLB represent from your point of view? High-quality Cosmetics
Previously loaded into Luxury Brand. High-quality products is often associated with Luxury Brand, but since Cosmetics was also considered in this Image, the loadings were very low and may have more explain the Factor “Cosmetic”, which didn’t existed among other images.
Im15 What do GLB represent from your point of view? Professional Selection of Brands
Previously loaded into Professionalism or Product Assortments. As we can see this Image is associated with Selection + Professional themes, therefore Product Assortments and Professional images are both blurried in this image. Maybe we should have selected a better formulation of Selection of Brands without Professional terms in it, thus would have only this image loaded to Products Assortments rather than Professionals. We kept Im15 until CFA, but saw very high instability of this item and therefore needed to remove it from the SEM.
2. Are the mechanism driving satisfaction and affective commitment similar? Are satisfaction and affective commitment mediating the impact of image perceptions on outcomes? If yes for which outcomes?
Most Images (Mechanisms) indirectly affect Consumer Satisfaction and Affective Commitment at the same time, except for Store Decoration who is passing through Consumer Satisfaction only. Yes, there are mediations effects coming from our SEM. We can show the following impacts of our factors through our mediators Consumer Satisfaction and Affective Commitment (constructs):
Indirect Effects
a21_b12: Shopping_Experience -> Affective_Commitment -> Repurchase_Intention (Positive)
a21_b22: Shopping_Experience -> Affective_Commitment -> Cocreation_Intention (Positive)
a12_b11: Store_Decoration -> Consumer_Satisfaction -> Repurchase_Intention (Negative)
a24_b12: French_Culture -> Affective_Commitment -> Repurchase_Intention (Positive)
a24_b22: French_Culture -> Affective_Commitment -> Cocreation_Intention (Positive)
a15_b11: Product_Assortment -> Consumer_Satisfaction -> Repurchase_Intention (Positive)
a25_b12: Product_Assortment -> Affective_Commitment -> Repurchase_Intention (Positive)
a18_b11: Professionalism -> Consumer_Satisfaction -> Repurchase_Intention (Positive)
a18_b21: Professionalism -> Consumer_Satisfaction -> Cocreation_Intention (Negative)
a23_b22: Luxury_Brands -> Affective_Commitment -> Cocreation_Intention (Negative)
a23_b12: Luxury_Brands -> Affective_Commitment -> Repurchase_Intention (Negative)
a15_b21: Product_Assortment -> Consumer_Satisfaction -> Cocreation_Intention (Negative)
a25_b22: Product_Assortment -> Affective_Commitment -> Cocreation_Intention (Positive)
There is overall a very small impact from the indirect effects.
3. What is driving the two distinct outcomes (repurchase and co-creation intention): Please rank the image dimensions with respect to the total effect on each outcome? Interpret your results.
Total Effects
| Factor | Images | Total Effect | Outcome |
|---|---|---|---|
| Shopping Experience | Im20, Im21, Im22 | 0.341 | Cocreation Intention |
| Shopping Experience | Im20, Im21, Im22 | 0.120 | Repurchase Intention |
Total Indirect Effects
| Factor | Mediators | Total Indirect Effect | Outcome |
|---|---|---|---|
| Shopping Experience | Affective Commitment | 0.069 | Repurchase Intention |
| Shopping Experience | Affective Commitment | 0.202 | Cocreation Intention |
| Store Decoration | Consumer Satisfaction | -0.023 | Repurchase Intention |
| French Culture | Affective Commitment | 0.041 | Repurchase Intention |
| French Culture | Affective Commitment | 0.120 | Cocreation Intention |
| Product_Assortment | CS + AC | 0.028 + 0.020 = 0.048 | Repurchase_Intention |
| Professionalism | Consumer_Satisfaction | 0.098 | Repurchase_Intention |
| Professionalism | Consumer_Satisfaction | -0.165 | Cocreation Intention |
| Luxury_Brands | Affective_Commitment | -0.031 | Repurchase Intention |
| Luxury_Brands | Affective_Commitment | -0.091 | Cocreation Intention |
| Product_Assortment | CS + AC | 0.057 - 0.048 = 0.009 | Cocreation Intention |